题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
#include <stdio.h>
float a[4];
int use[4]={0};
float result=0;
int bool=0;
void dfs(float res,int deep)
{
if(deep==4)
{
if(res==24)
{
bool=1;
}
return;
}
int i;
for(i=0;i<4;i++)
{
if(use[i]==1)
{
continue;
}else{
use[i]=1;
dfs(res+a[i],deep+1);
dfs(res-a[i],deep+1);
dfs(res*a[i],deep+1);
dfs(res/a[i],deep+1);
if(res!=0)
{
dfs(a[i]/res,deep+1);
}
dfs(a[i]-res,deep+1);
use[i]=0;
}
}
}
int main() {
scanf("%f%f%f%f",a,a+1,a+2,a+3);
dfs(result,0);
if(bool)
{
printf("true\n");
}else{
printf("false\n");
}
}
查看12道真题和解析