337浏览
查看: 337|回复: 1

24点程序

[复制链接]
回帖奖励 12 创造力 回复本帖可获得 3 创造力奖励! 每人限 1 次
你们是不是有时候因为24点而烦恼,我今天就提供一个24点程序,只要输入四个数,就会输出算的方法。
(首先要安装DEV-C++,因为这个程序是c++代码)
想手搓代码的人我发代码,你手搓,不想的人就直接下载附件。
代码:
  1. #include<cstdio>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. #include<algorithm>
  5. using namespace std;
  6. int a[4],cnt;
  7. char b[4]={'*','+','-','/'};
  8. void calc(double &a,double b,double c){
  9.         if(c==0)a*=b;
  10.         else if(c==1)a+=b;
  11.         else if(c==2)a-=b;
  12.         else if(b>0)a=a*1.0/b;
  13.         else a=-1;
  14. }
  15. bool calc1(double a1,double a2,double a3,double a4,int b1,int b2,int b3,double p){
  16.         int t1=a1,t2=a2,t3=a3,t4=a4;
  17.         if(p==1){
  18.                 calc(a1,a2,b1);if(a1==-1)return 0;
  19.                 calc(a1,a3,b2);if(a1==-1)return 0;
  20.                 calc(a1,a4,b3);
  21.                 if(fabs(a1-24)<1e-8){
  22.                         printf("(((%d%c%d)%c%d)%c%d)\n",t1,b[b1],t2,b[b2],t3,b[b3],t4);
  23.                         return 1;
  24.                 }
  25.         }else if(p==3){//((A?(B?C))?D)
  26.                 calc(a2,a3,b2);if(a2==-1)return 0;
  27.                 calc(a1,a2,b1);if(a1==-1)return 0;
  28.                 calc(a1,a4,b3);
  29.                 if(fabs(a1-24)<1e-8){
  30.                         printf("((%d%c(%d%c%d))%c%d)\n",t1,b[b1],t2,b[b2],t3,b[b3],t4);
  31.                         return 1;
  32.                 }
  33.         }else if(p==2){//((A?B)?(C?D))
  34.                 calc(a1,a2,b1);if(a1==-1)return 0;
  35.                 calc(a3,a4,b3);if(a3==-1)return 0;
  36.                 calc(a1,a3,b2);
  37.                 if(fabs(a1-24)<1e-8){
  38.                         printf("((%d%c%d)%c(%d%c%d))\n",t1,b[b1],t2,b[b2],t3,b[b3],t4);
  39.                         return 1;
  40.                 }
  41.         }else if(p==4){//(A?((B?C)?D))
  42.                 calc(a2,a3,b2);if(a2==-1)return 0;
  43.                 calc(a2,a4,b3);if(a2==-1)return 0;
  44.                 calc(a1,a2,b1);
  45.                 if(fabs(a1-24)<1e-8){
  46.                         printf("(%d%c((%d%c%d)%c%d))\n",t1,b[b1],t2,b[b2],t3,b[b3],t4);
  47.                         return 1;
  48.                 }
  49.         }else {//(A?(B?(C?D)))
  50.                 calc(a3,a4,b3);if(a3==-1)return 0;
  51.                 calc(a2,a3,b2);if(a2==-1)return 0;
  52.                 calc(a1,a2,b1);
  53.                 if(fabs(a1-24)<1e-8){
  54.                         printf("(%d%c(%d%c(%d%c%d)))\n",t1,b[b1],t2,b[b2],t3,b[b3],t4);
  55.                         return 1;
  56.                 }
  57.         }return 0;
  58. }
  59. int main(){
  60.         scanf("%d %d %d %d",&a[0],&a[1],&a[2],&a[3]);
  61.         int p,a1,a2,a3,a4,b1,b2,b3;
  62.         bool mark[5]={0};
  63.         sort(a,a+4);
  64.         for(p=1;p<=5;p++)
  65.                 for(a1=0;a1<4;a1++){
  66.                         mark[a1]=1;
  67.                         for(b1=0;b1<4;b1++)
  68.                                 for(a2=0;a2<4;a2++){
  69.                                         if(mark[a2])continue;
  70.                                         mark[a2]=1;
  71.                                         for(b2=0;b2<4;b2++)
  72.                                                 for(a3=0;a3<4;a3++){
  73.                                                         if(mark[a3])continue;
  74.                                                         for(b3=0;b3<4;b3++){
  75.                                                                 if(calc1(a[a1],a[a2],a[a3],a[6-a1-a2-a3],b1,b2,b3,p))return 0;
  76.                                                         }
  77.                                                 }mark[a2]=0;
  78.                                 }mark[a1]=0;
  79.                 }
  80.         return 0;
  81. }
复制代码

下载附件速算24点.zip

代码满天  初级技师

发表于 2024-7-18 19:38:28

回帖奖励 +3 创造力

想拿python的代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail