题解 | #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")



