用扑克牌计算24点
来源:百度知道 编辑:UC知道 时间:2024/06/27 10:18:50
请列出算不出24点的牌面!(15个以上,每组是4个数,如:2.3.6.5以此类推~!快~~
共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;