题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
#include <iostream> #include <vector> using namespace std; bool bp(vector<double> vec, vector<bool>& used, double result, int count){ if (count == 4 && result == 24) return true; for (int i = 0; i < 4; i++){ if (used[i]) continue; used[i] = true; if (count == 0){ if (bp(vec, used, result + vec[i], count + 1)) return true; } else if (bp(vec, used, result + vec[i], count + 1) || bp(vec, used, result - vec[i], count + 1) || bp(vec, used, result * vec[i], count + 1) || bp(vec, used, result / vec[i], count + 1)) return true; used[i] = false; } return false; } int main() { int n; vector<double> vec; while (cin>>n){ vec.push_back(n); } vector<bool> used(4, false); if (bp(vec,used, 0, 0)) cout << "true"; else cout << "false"; } // 64 位输出请用 printf("%lld")