OpenJudge
最编程
2024-04-27 18:59:28
...
YES NO
1 #include <iostream> 2 #include <cstring> 3 #include <cmath> 4 using namespace std; 5 const double x = 1e-6; 6 7 double a[5]; 8 9 bool dfs(int step) 10 { 11 int i,j,k,t; 12 if(step == 1) 13 { 14 if(fabs(a[0]-24)< x) 15 return 1; 16 else 17 return 0; 18 } 19 else 20 { 21 double m,n; 22 for(i=0;i<step;i++) 23 for(j=i+1;j<step;j++) 24 { 25 m = a[i],n = a[j]; 26 a[j] = a[step - 1]; 27 for(k=1;k<=6;k++) 28 { 29 // m = a[i],n = a[j]; 30 // a[j] = a[step - 1]; 31 switch (k) 32 { 33 case 1:a[i] = m+n; 34 if(dfs(step-1)) return 1; 35 break; 36 case 2:a[i] = m-n; 37 if(dfs(step-1)) return 1; 38 break; 39 case 3:a[i] = n-m; 40 if(dfs(step-1)) return 1; 41 break; 42 case 4:a[i] = m*n; 43 if(dfs(step-1)) return 1; 44 break; 45 case 5: 46 if(fabs(n)>=x) 47 { 48 a[i] = m/n; 49 if(dfs(step-1)) return 1; 50 break; 51 } 52 case 6: 53 if(fabs(m)>=x) 54 { 55 a[i] = n/m; 56 if(dfs(step-1)) return 1; 57 break; 58 } 59 } 60 } 61 a[i] = m,a[j] = n; 62 } 63 } 64 return 0;//忘啦 65 } 66 67 int main() 68 { 69 int i,j,k,t; 70 while(1) 71 { 72 memset(a,0,sizeof(a)); 73 double sum = 0; 74 for(i=0;i<4;i++) 75 { 76 cin>>a[i]; 77 sum += a[i]; 78 } 79 bool flag ; 80 if(0==sum) 81 break; 82 else 83 flag = dfs(4); 84 if(flag) 85 cout<<"YES"<<endl; 86 else 87 cout<<"NO"<<endl; 88 } 89 return 0; 90 }
上一篇: 24点的计算
推荐阅读
-
OpenJudge
-
openjudge_2.5 搜索的基本算法_1490:骑士之旅--难度
-
石头取勝秘籍:OpenJudge NOI 2.5 6266取石子游戏详解与代码分享
-
openJudge: 使用C语言消除多余空白字符的解决方案与实例解答
-
在线编程比赛平台指南:网友观点各异,洛谷有人力挺对零基础友好,且提供Uva、Spoj、Atcoder、Codeforces等外联。特别推荐洛谷网校助力省选预备生,注意其特殊处理字符输入及字符串的方法。P1388题目数据存疑,受限于版权问题无法修正。还有其他如编程魔法师、新华算法赛训、HydroOJ、AtCoder、Vijos、OpenJudge、NOI、LOJ、HUSTOJ以及由热心家长创办的MYOJ等,后者定期为初学者设赛,是菜鸟们的实战练兵地。而牛客竞赛网作为专注算法训练的平台,每周都有竞赛并附带奖励,是算法选手的理想学习场所。
-
挑战 OpenJudge 百练第 2787 题:算出 24 的方法
-
Openjudge 1.5 循环控制系统