用扑克牌计算24点

请列出算不出24点的牌面!(15个以上,每组是4个数,如:2.3.6.5以此类推~!快~~... 请列出算不出24点的牌面!(15个以上,每组是4个数,如:2.3.6.5以此类推~!快~~ 展开
 我来答
shy2850
2009-10-05 · TA获得超过6775个赞
知道大有可为答主
回答量:2505
采纳率:55%
帮助的人:1597万
展开全部
  共400多组呢!
  我写了一个C语言的穷举算法:执行一遍就都出来了。

  #include<stdio.h>
  #include<conio.h>
  #define N 13
  main(){
  int i,a[4],ALL=0;
  int YES=0,NO=0,flag=0;
  for(a[0]=1;a[0]<=N;a[0]++)
  for(a[1]=a[0];a[1]<=N;a[1]++)
  for(a[2]=a[1];a[2]<=N;a[2]++)
  for(a[3]=a[2];a[3]<=N;a[3]++)
  { ALL++;
  flag=fun(a[0],a[1],a[2],a[3]);
  if(flag!=0)YES++;
  else {printf("\n");
  for(i=0;i<4;i++)
  printf("%d,",a[i]);
  NO++;}
  }
  printf("\n\tYES:%d\n\n\tNO:%d\n\n\tALL:%d",YES,NO,ALL);
  getch();
  }
  int fun(int a,int b,int c,int d){
  int flag=0,time=0;
  int i=0,j=0,k=0,a_b,temp;
  char ch[4];
  while(time<6){
  for(i=0;i<4;i++){
  if(i<3){
  if(i==0){a_b=a+b;ch[i]='+';}
  if(i==1){a_b=a-b;ch[i]='-';}
  if(i==2){a_b=a*b;ch[i]='*';}
  {
  if(a_b+c+d==24)flag++;
  if(a_b+c-d==24)flag++;
  if(a_b-c+d==24)flag++;
  if(a_b-c+d==-24)flag++;
  if(a_b-c-d==24)flag++;
  if(a_b-c-d==-24)flag++;
  if((a_b)+c*d==24)flag++;
  if((a_b)-c*d==24)flag++;
  for(j=0;j<2;j++){
  if((a_b)*c+d==24)flag++;
  if((a_b)*c+d==-24)flag++;
  if((a_b)*c-d==24)flag++;
  if((a_b)*c-d==-24)flag++;
  if((a_b)*(c+d)==24)flag++;
  if((a_b)*(c+d)==-24)flag++;
  if((a_b)*(c-d)==24)flag++;
  if((a_b)==24*(c+d))flag++;
  if(a_b&&(a_b)==24*(c-d))flag++;
  if((a_b)*c*d==24)flag++;
  if((a_b)*c*d==-24)flag++;
  if((a_b)==24*c*d)flag++;
  if((a_b)*c==24*d)flag++;
  if((a_b)==-24*c*d)flag++;
  if((a_b)*c==-24*d)flag++;
  if((a_b)+d*c==24*c)flag++;
  if((a_b)-d*c==24*c)flag++;
  if((a_b-c)*d==24)flag++;
  if((a_b+c)*d==24)flag++;
  if((a_b-c)*d==-24)flag++;
  if((a_b+c)*d==-24)flag++;
  if((a_b+c)==24*d)flag++;
  if((a_b-c)==24*d)flag++;
  if(c!=d){temp=c;c=d;d=temp;}
  else break;
  }
  }
  }
  if(i==3)for(k=0;k<2;k++){a_b=a;ch[i]='/';
  if(a_b+(c+d)*b==24*b)flag++;
  if(a_b-(c+d)*b==-24*b)flag++;
  if(a_b+(c-d)*b==24*b)flag++;
  if(a_b+(c-d)*b==-24*b)flag++;
  if(a_b-(c-d)*b==24*b)flag++;
  if(a_b-(c-d)*b==-24*b)flag++;
  for(j=0;j<2;j++){
  if((a_b)*c+d*b==24*b)flag++;
  if((a_b)*c-d*b==24*b)flag++;
  if((a_b)*(c+d)==24*b)flag++;
  if((a_b)*(c-d)==24*b)flag++;
  if((a_b)+d*c*b==24*c*b)flag++;
  if((a_b)+d*c*b==24*b)flag++;
  if((a_b)-d*c*b==-24*b)flag++;
  if((a_b-c*b)*d==24*b)flag++;
  if((a_b-c*b)*d==-24*b)flag++;
  if((a_b+c*b)*d==24*b)flag++;
  if((a_b+c*b)==24*d*b)flag++;
  if((a_b-c*b)==24*d*b)flag++;
  if(a_b*c*b==24*b)flag++;
  if(a_b*c==24*b*d)flag++;
  if(c!=d){temp=c;c=d;d=temp;}
  else break;
  }temp=a;a=b;b=temp;
  }
  }
  if(time==0){temp=b;b=c;c=temp;if(b==c)time++;}
  if(time==1){temp=b;b=d;d=temp;if(b==d)time++;}
  if(time==2){temp=a;a=c;c=temp;if(a==c)time++;}
  if(time==3){temp=a;a=d;d=temp;if(a==d)time++;}
  if(time==4){temp=b;b=d;d=temp;if(b==d)time++;}
  if(time==5){temp=a;a=c;c=temp;}
  time++;
  }
  return flag;
  }
匿名用户
2009-10-10
展开全部
5*6-2*3=24
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式