leetcode 24点问题
程序员文章站
2022-03-31 19:48:58
...
遇到这种问题,建模是关键,想清楚怎么构建模型。
class Solution {
public:
bool solve(vector<float> &nums){
if(nums.size() == 1) return abs(nums[0] - 24.0) < 1e-5;
for(int i=0; i<nums.size(); i++){
for(int j=0; j<nums.size(); j++){
if(i == j) continue;
vector<float> nums2;
for(int k=0; k<nums.size(); k++){
if(k != i && k != j)
nums2.push_back(nums[k]);
}
for(int o=0; o<4; o++){
vector<float> nums3;
nums3.insert(nums3.end(), nums2.begin(), nums2.end());
if(o < 2 && j > i) continue;
if(o == 0) nums3.push_back(nums[i] + nums[j]);
if(o == 1) nums3.push_back(nums[i] * nums[j]);
if(o == 2) nums3.push_back(nums[i] - nums[j]);
if(o == 3) nums3.push_back(nums[i] / nums[j]);
if(solve(nums3))
return true;
}
}
}
return false;
}
bool judgePoint24(vector<int>& nums) {
vector<float> fnums;
for(auto n: nums) fnums.push_back(float(n));
return solve(fnums);
}
};
下一篇: 表达式求值