题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
#include <iostream>
#include <vector>
using namespace std;
bool dfs(vector<double>&vec,double sum){
if(vec.empty()) return sum==24;
for(int i=0;i<vec.size();i++){
vector<double> rest(vec);
rest.erase(rest.begin()+i);
if(dfs(rest,sum+vec[i]) ||
dfs(rest,sum-vec[i]) ||
dfs(rest,sum*vec[i]) ||
dfs(rest,sum/vec[i])){
return true;
}
}
return false;
}
int main(){
vector<double> vec(4);
for(int i=0;i<4;i++){
std::cin >> vec[i];
}
if(dfs(vec, 0)){
std::cout << "true" << std::endl;
}else{
std::cout << "false" << std::endl;
}
return 0;
}
查看18道真题和解析