题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
#include <iostream> using namespace std; #include <bits/stdc++.h> vector<double>a(4); bool flag = false; vector<bool>used(4,false); void dfs(int p, double res){ if(flag) return; if(p == 4) { if(res == 24) { flag = true; return; } } for(int i = 0; i < 4; i++){ if(used[i] == true) continue; used[i]=true; dfs(p + 1, res + a[i]); dfs(p + 1, res - a[i]); dfs(p + 1, res * a[i]); dfs(p + 1, res / a[i]); used[i]=false; } } void solve(){ dfs(0,0); flag ? cout << "true\n" : cout << "false\n"; } int main() { while (cin >> a[0]>>a[1]>>a[2]>>a[3]) { // 注意 while 处理多个 case flag = false; solve(); } return 0; } // 64 位输出请用 printf("%lld")