记录编号 348491 评测结果 AAAAAAAAAA
题目名称 算24点 最终得分 100
用户昵称 GravatarZWOI_ヤシニャ 是否通过 通过
代码语言 C 运行时间 0.002 s
提交时间 2016-11-14 11:46:14 内存使用 0.29 MiB
显示代码纯文本
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. int b[4][4],book[10],q;
  5. char e[5];
  6. int a[10];
  7. void dfs(int x,int y)
  8. {
  9. int i,j,t,p;
  10. if(y==4)
  11. {
  12. if(b[3][3]==24)
  13. {
  14. for(t=1;t<=3;t++)
  15. printf("%d%c%d=%d\n",b[t][1],e[t],b[t][2],b[t][3]);
  16. exit(0);
  17. }
  18. return ;
  19. }
  20. for(j=1;j<=4;j++)
  21. {
  22. if(!book[j])
  23. {
  24. if(a[x]<a[j])
  25. {
  26. b[y][1]=a[j];
  27. b[y][2]=a[x];
  28. }
  29. else
  30. {
  31. b[y][1]=a[x];
  32. b[y][2]=a[j];
  33. }
  34. p=5;
  35. while(a[p])
  36. p++;
  37. book[p]=book[j]=1;
  38. for(i=1;i<=4;i++)
  39. {
  40. if(i==1)
  41. {
  42. b[y][3]=a[x]+a[j];
  43. e[y]='+';
  44. a[p]=b[y][3];
  45. dfs(p,y+1);
  46. }
  47. if(i==2)
  48. {
  49. b[y][3]=b[y][1]-b[y][2];
  50. e[y]='-';
  51. a[p]=b[y][3];
  52. dfs(p,y+1);
  53. }
  54. if(i==3)
  55. {
  56. b[y][3]=a[x]*a[j];
  57. e[y]='*';
  58. a[p]=b[y][3];
  59. dfs(p,y+1);
  60. }
  61. if(i==4&&(b[y][2]&&b[y][1]%b[y][2]==0))
  62. {
  63. b[y][3]=a[j]/a[x];
  64. e[y]='/';
  65. a[p]=b[y][3];
  66. dfs(p,y+1);
  67. }
  68. }
  69. book[p]=a[p]=book[j]=0;
  70. }
  71. }
  72. }
  73. int main()
  74. {
  75. int i;
  76. freopen("point24.in","r",stdin);
  77. freopen("point24.out","w",stdout);
  78. scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4]);
  79. for(i=1;i<=4;i++)
  80. {
  81. book[i]=1;
  82. memset(b,0,sizeof(b));
  83. dfs(i,1);
  84. book[i]=0;
  85. }
  86. if(!q)
  87. printf("No answer!");
  88. return 0;
  89. }