24点快速运算

Code:这个可以用VC进行编译
  1. #include<stdio.h>
  2. #defineERROR_NUM(0x7fffffff)
  3. #defineRESULT_NUM(24)
  4. charo_name[]="+-*/";
  5. intcalc(inta,into,intb)
  6. {
  7. if((a==ERROR_NUM)||(b==ERROR_NUM))
  8. returnERROR_NUM;
  9. switch(o)
  10. {
  11. case0:
  12. returna+b;
  13. case1:
  14. returna-b;
  15. case2:
  16. returna*b;
  17. case3:
  18. return(a%b)?ERROR_NUM:(a/b);
  19. }
  20. returnERROR_NUM;
  21. }
  22. intselect(inti[])
  23. {
  24. into1,o2,o3,x1,x2,x3,x4;
  25. intresult,result1;
  26. intcount=0;
  27. for(x1=0;x1<4;x1++)
  28. {
  29. for(o1=0;o1<4;o1++)
  30. {
  31. for(x2=0;x2<4;x2++)
  32. {
  33. if(x1==x2)
  34. continue;
  35. for(o2=0;o2<4;o2++)
  36. {
  37. for(x3=0;x3<4;x3++)
  38. {
  39. if((x1==x3)||(x2==x3))
  40. continue;
  41. for(o3=0;o3<4;o3++)
  42. {
  43. for(x4=0;x4<4;x4++)
  44. {
  45. if((x1==x4)||(x2==x4)||(x3==x4))
  46. continue;
  47. result=calc(i[x1],o1,i[x2]);
  48. result=calc(result,o2,i[x3]);
  49. result=calc(result,o3,i[x4]);
  50. if(RESULT_NUM==result)
  51. {
  52. count++;
  53. printf("((%d%c%d)%c%d)%c%d/n",i[x1],o_name[o1],i[x2],o_name[o2],i[x3],o_name[o3],i[x4]);
  54. //gotox;
  55. }
  56. result=calc(i[x1],o1,i[x2]);
  57. result1=calc(i[x3],o3,i[x4]);
  58. result=calc(result,o2,result1);
  59. if(RESULT_NUM==result)
  60. {
  61. count++;
  62. printf("(%d%c%d)%c(%d%c%d)/n",i[x1],o_name[o1],i[x2],o_name[o2],i[x3],o_name[o3],i[x4]);
  63. //gotox;
  64. }
  65. }
  66. }
  67. }
  68. }
  69. }
  70. }
  71. }
  72. if(!count)
  73. {
  74. printf("NOANSWER!/n");
  75. }
  76. //x:
  77. returncount;
  78. }
  79. intmain(void)
  80. {
  81. inta[4];
  82. while(1)
  83. {
  84. printf("Pleaseinputfournumber:");//*/
  85. scanf("%d%d%d%d",a,a+1,a+2,a+3);
  86. select(a);
  87. }
  88. return0;
  89. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值