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

