mgj 看到在lc上是hard类,我就算找了点借口安慰自己,,,
然而,面那边要求不许用double我也是醉了。
怎么写?
208
Last Edit: October 2, 2018 11:07 AM
2.0K VIEWS
Search for all possible cases.
Looks like backtracking...
class Solution {
public:
double elipson = pow(10.0, -5);
vector<char> operations = {'+','-','*','/'};
bool judgePoint24(vector<int>& nums) {
vector<double> vec;
for(auto n : nums){
vec.push_back(n*1.0);
}
return find24(vec);
}
bool find24(vector<double> vec){
if(vec.size() == 1){
return abs(vec[0] - 24.0) <= elipson;
}
for(int i = 0; i < vec.size(); ++i){//each time we pick up two number for computation
for(int j = 0; j < vec.size(); ++j){
if(i == j) continue;
vector<double> res;
for(int k = 0; k < vec.size(); ++k){
if(k != i && k != j) res.push_back(vec[k]);
}
for(auto op : operations){
if((op == '+' || op == '*') && i > j) continue;//no need to re-calculate
if(op =='/' && vec[j] == 0.0) continue;
switch(op){
case '+': res.push_back(vec[i] + vec[j]); break;
case '-': res.push_back(vec[i] - vec[j]); break;
case '*': res.push_back(vec[i] * vec[j]); break;
case '/': res.push_back(vec[i] / vec[j]); break;
}
if(find24(res)) return true;
res.pop_back();//!!!important
}
}
}
return false;
}
};
博主提到在LeetCode(lc)上遇到hard类题目,面试方要求不许用double类型,博主询问该如何编写代码,还提到要搜索所有可能情况,疑似回溯算法。
416

被折叠的 条评论
为什么被折叠?



