题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
#include<iostream>
#include<vector>
#include<algorithm>
#include <cmath>
using namespace std;
vector<int> choice(4);
vector<bool> used(4,false);
bool flag=false;
void dfs(double sum)
{
if(sum==24)
{
flag=true;
return;
}
for(int i=0;i<4;i++)
{
if(used[i]) continue;
else{
used[i]=true;
dfs(double(sum)/(double)choice[i]);
dfs(sum+choice[i]);
dfs(sum-choice[i]);
dfs(sum*choice[i]);
used[i]=false;
}
}
// cout<<sum<<endl;
}
int main()
{
cin>>choice[0]>>choice[1]>>choice[2]>>choice[3];
dfs(0);
string res;
res=flag?"true":"false";
cout<<res;
}
#include<vector>
#include<algorithm>
#include <cmath>
using namespace std;
vector<int> choice(4);
vector<bool> used(4,false);
bool flag=false;
void dfs(double sum)
{
if(sum==24)
{
flag=true;
return;
}
for(int i=0;i<4;i++)
{
if(used[i]) continue;
else{
used[i]=true;
dfs(double(sum)/(double)choice[i]);
dfs(sum+choice[i]);
dfs(sum-choice[i]);
dfs(sum*choice[i]);
used[i]=false;
}
}
// cout<<sum<<endl;
}
int main()
{
cin>>choice[0]>>choice[1]>>choice[2]>>choice[3];
dfs(0);
string res;
res=flag?"true":"false";
cout<<res;
}