//你看一下,下面这段代码,可能对你有帮助:
#include
#include
#include
int fun(int a,int b,int c,int d);
//4个数求24点的穷举算法
int main(){
int i=0,j=0,a[4];
char ch2,ch1,ch;
for(;;){
printf("Chose method: input(I) OR random(R) OR EXIT(Q)\n");
ch1=getch();
if(ch1=='q'||ch1=='Q')break;
else if(ch1=='R'||ch1=='r')
for(i=0;i<4;i++)a[i]=rand()%13+1;
else
for(i=0;i<4;i++){
printf("\nNO.%d:",i+1);
scanf("%d",&a[i]);
if(a[i]<1||a[i]>13)
return main();
}
printf("\n\tthe 4 numbers are:");
for(i=0;i<4;i++) printf("%d,",a[i]);
printf("\n\n\tget way to 24(or:-24)\n");
if(ch2=getch())
j=fun(a[0],a[1],a[2],a[3]);
if(j==0)printf("\n\n\tNO ANSWERS!\n\n");
else printf("\n\n\tThere are %d ways to 24(or -24):\n\n\n\n",j);
scanf("%c",&ch);
}
}
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){printf("\n%d%c%d+%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b+c-d==24){printf("\n%d%c%d+%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c+d==24){printf("\n%d%c%d-%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c+d==-24){printf("\n%d%c%d-%d+%d=-24",a,ch[i],b,c,d);flag++;}
if(a_b-c-d==24){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c-d==-24){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)+c*d==24){printf("\n(%d%c%d)+%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-c*d==24){printf("\n(%d%c%d)-%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==24){printf("\n(%d%c%d)*(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==-24){printf("\n(%d%c%d)*(%d+%d)=-24",a,ch[i],b,c,d);flag++;}
if((a_b)==24*(c+d)){printf("\n(%d%c%d)/(%d+%d)=24",a,ch[i],b,c,d);flag++;}
for(j=0;j<2;j++){
if((a_b)*c+d==24){printf("\n(%d%c%d)*%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c+d==-24){printf("\n(%d%c%d)*%d+%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d==24){printf("\n(%d%c%d)*%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d==-24){printf("\n(%d%c%d)*%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c-d)==24){printf("\n(%d%c%d)*(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b&&(a_b)==24*(c-d)){printf("\n(%d%c%d)/(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c*d==24){printf("\n(%d%c%d)*%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c*d==-24){printf("\n(%d%c%d)*%d*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)==24*c*d){printf("\n(%d%c%d)/(%d*%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c==24*d){printf("\n(%d%c%d)*%d/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)==-24*c*d){printf("\n(%d%c%d)/(%d*%d)=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*c==-24*d){printf("\n(%d%c%d)*%d/%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c==24*c){printf("\n(%d%c%d)/%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-d*c==24*c){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)*d==24){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b+c)*d==24){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)*d==-24){printf("\n(%d%c%d+%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c)*d==-24){printf("\n(%d%c%d+%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c)==24*d){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)==24*d){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,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){printf("\n%d%c%d+%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c+d)*b==-24*b){printf("\n%d%c%d-(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b+(c-d)*b==24*b){printf("\n%d%c%d+(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b+(c-d)*b==-24*b){printf("\n%d%c%d+(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c-d)*b==24*b){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c-d)*b==-24*b){printf("\n%d%c%d-%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==24*b){printf("\n(%d%c%d)*(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c*b==24*b){printf("\n(%d%c%d)/%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-d*c*b==-24*b){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b*c*b==24*b){printf("\n(%d%c%d*%d*%d=24",a,ch[i],b,c,d);flag++;}
for(j=0;j<2;j++){
if((a_b)*c+d*b==24*b){printf("\n(%d%c%d)*%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d*b==24*b){printf("\n(%d%c%d)*%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c-d)==24*b){printf("\n(%d%c%d)*(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c*b==24*c*b){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)*d==24*b){printf("\n(%d%c%d-%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)*d==-24*b){printf("\n(%d%c%d-%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c*b)*d==24*b){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b+c*b)==24*d*b){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)==24*d*b){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if(a_b*c==24*b*d){printf("\n(%d%c%d*%d*%d=24",a,ch[i],b,c,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;
}
hdjhjafd
//你看一下,下面这段代码,可能对你有帮助:
#include
#include
#include
int fun(int a,int b,int c,int d);
//4个数求24点的穷举算法
int main(){
int i=0,j=0,a[4];
char ch2,ch1,ch;
for(;;){
printf("Chose method: input(I) OR random(R) OR EXIT(Q)\n");
ch1=getch();
if(ch1=='q'||ch1=='Q')break;
else if(ch1=='R'||ch1=='r')
for(i=0;i<4;i++)a[i]=rand()%13+1;
else
for(i=0;i<4;i++){
printf("\nNO.%d:",i+1);
scanf("%d",&a[i]);
if(a[i]<1||a[i]>13)
return main();
}
printf("\n\tthe 4 numbers are:");
for(i=0;i<4;i++) printf("%d,",a[i]);
printf("\n\n\tget way to 24(or:-24)\n");
if(ch2=getch())
j=fun(a[0],a[1],a[2],a[3]);
if(j==0)printf("\n\n\tNO ANSWERS!\n\n");
else printf("\n\n\tThere are %d ways to 24(or -24):\n\n\n\n",j);
scanf("%c",&ch);
}
}
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){printf("\n%d%c%d+%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b+c-d==24){printf("\n%d%c%d+%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c+d==24){printf("\n%d%c%d-%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c+d==-24){printf("\n%d%c%d-%d+%d=-24",a,ch[i],b,c,d);flag++;}
if(a_b-c-d==24){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c-d==-24){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)+c*d==24){printf("\n(%d%c%d)+%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-c*d==24){printf("\n(%d%c%d)-%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==24){printf("\n(%d%c%d)*(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==-24){printf("\n(%d%c%d)*(%d+%d)=-24",a,ch[i],b,c,d);flag++;}
if((a_b)==24*(c+d)){printf("\n(%d%c%d)/(%d+%d)=24",a,ch[i],b,c,d);flag++;}
for(j=0;j<2;j++){
if((a_b)*c+d==24){printf("\n(%d%c%d)*%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c+d==-24){printf("\n(%d%c%d)*%d+%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d==24){printf("\n(%d%c%d)*%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d==-24){printf("\n(%d%c%d)*%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c-d)==24){printf("\n(%d%c%d)*(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b&&(a_b)==24*(c-d)){printf("\n(%d%c%d)/(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c*d==24){printf("\n(%d%c%d)*%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c*d==-24){printf("\n(%d%c%d)*%d*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)==24*c*d){printf("\n(%d%c%d)/(%d*%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c==24*d){printf("\n(%d%c%d)*%d/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)==-24*c*d){printf("\n(%d%c%d)/(%d*%d)=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*c==-24*d){printf("\n(%d%c%d)*%d/%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c==24*c){printf("\n(%d%c%d)/%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-d*c==24*c){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)*d==24){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b+c)*d==24){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)*d==-24){printf("\n(%d%c%d+%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c)*d==-24){printf("\n(%d%c%d+%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c)==24*d){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)==24*d){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,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){printf("\n%d%c%d+%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c+d)*b==-24*b){printf("\n%d%c%d-(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b+(c-d)*b==24*b){printf("\n%d%c%d+(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b+(c-d)*b==-24*b){printf("\n%d%c%d+(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c-d)*b==24*b){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c-d)*b==-24*b){printf("\n%d%c%d-%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==24*b){printf("\n(%d%c%d)*(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c*b==24*b){printf("\n(%d%c%d)/%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-d*c*b==-24*b){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b*c*b==24*b){printf("\n(%d%c%d*%d*%d=24",a,ch[i],b,c,d);flag++;}
for(j=0;j<2;j++){
if((a_b)*c+d*b==24*b){printf("\n(%d%c%d)*%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d*b==24*b){printf("\n(%d%c%d)*%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c-d)==24*b){printf("\n(%d%c%d)*(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c*b==24*c*b){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)*d==24*b){printf("\n(%d%c%d-%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)*d==-24*b){printf("\n(%d%c%d-%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c*b)*d==24*b){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b+c*b)==24*d*b){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)==24*d*b){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if(a_b*c==24*b*d){printf("\n(%d%c%d*%d*%d=24",a,ch[i],b,c,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;
}
hdjhjafd