题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
#include <iostream> #include <vector> using namespace std; bool dfs(vector<double> &vc, vector<bool> &used, double summ){ // cout << "summ = " << summ << endl; if(summ == 24){ return true; } for(int i = 0; i < 4; ++i){ if(!used[i]){ used[i] = true; if(dfs(vc, used, summ + vc[i])){ return true; }else if(dfs(vc, used, summ - vc[i])){ return true; }else if (dfs(vc, used, summ * vc[i])) { return true; }else if (vc[i] != 0 && dfs(vc, used, summ / vc[i])) { return true; } used[i] = false; } } return false; } int main() { vector<double> vc(4, 0); for(int i = 0; i < 4; ++i){ cin >> vc[i]; } vector<bool> used(4, false); if(dfs(vc, used, 0)){ cout << "true" << endl; }else{ cout << "false" << endl; } return 0; }
我看了半天硬是没看出我的解有什么问题,看了别人的解答才知道要用double啊