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