有4张牌,分别是10,10,4,4,请凑出24,在2分钟内给出答案!!!!!
呵呵,怎么都是24点的问题?!
半年前写过一个解24点问题的程序,可以列出所有解。上面所有问题都可以用这个程序得出的。
下面写源程序如下:
//-----------------------------------------------------------------------
//-------------24 POINTS GAME yiyuan------------
//-----------------------------------------------------------------------
# include
# include
# define Max 10
# define Min 0
void main()
{
int w,x,y,z;
register float a,b,c,d;
float i[5];
int f[34];
for(w=0;w<34;w++)
f[w]=1;
puts("\n24 POINTS GAME !\n");
do
{
printf("Insert a,b,c,d: ");
scanf("%f,%f,%f,%f",&i[1],&i[2],&i[3],&i[4]);
if(i[1]>Min&&i[1]Min&&i[2]Min&&i[3]Min&&i[4] break;
puts("Sorry,the numbers must be in the range of 1 to 9 !!"); //需要改改,懒了。
}while(w++<36);
if(w==37)
{
puts("PROGRAMME END!!!");
exit(1);
}
for(w=1;w<5;w++)
for(x=1;x<5;x++)
{
if(x==w)
continue;
for(y=1;y<5;y++)
{
if(y==w||y==x)
continue;
for(z=1;z<5;z++)
{
if(z==w||z==x||z==y)
continue;
a=i[w];
b=i[x];
c=i[y];
d=i[z];
if(a+b+c+d==24&&f[0])
{
printf("%0.0f+%0.0f+%0.0f+%0.0f=24\n",a,b,c,d);
f[0]=0;
}
if(a+b+c-d==24&&f[1])
{
printf("%0.0f+%0.0f+%0.0f+%0.0f=24\n",a,b,c,d);
f[1]=0;
}
if(a*b*c*d==24&&f[2])
{
printf("%0.0f*%0.0f*%0.0f*%0.0f=24\n",a,b,c,d);
f[2]=0;
}
if(a*b*c/d==24&&f[3])
{
printf("%0.0f*%0.0f*%0.0f/%0.0f=24\n",a,b,c,d);
f[3]=0;
}
if(a*b/c/d==24&&f[4])
{
printf("%0.0f*%0.0f/%0.0f/%0.0f=24\n",a,b,c,d);
f[4]=0;
}
if((a+b)*(c+d)==24&&f[5])
{
printf("(%0.0f+%0.0f)*(%0.0f+%0.0f)=24\n",a,b,c,d);
f[5]=0;
}
if((a-b)*(c-d)==24&&f[6])
{
printf("(%0.0f-%0.0f)*(%0.0f-%0.0f)=24\n",a,b,c,d);
f[6]=0;
}
if((a+b)*(c-d)==24&&f[7])
{
printf("(%0.0f+%0.0f)*(%0.0f-%0.0f)=24\n",a,b,c,d);
f[7]=0;
}
if((a+b)*c+d==24&&f[8])
{
printf("(%0.0f+%0.0f)*%0.0f+%0.0f=24\n",a,b,c,d);
f[8]=0;
}
if((a+b)*c-d==24&&f[9])
{
printf("(%0.0f+%0.0f)*%0.0f-%0.0f=24\n",a,b,c,d);
f[9]=0;
}
if((a-b)*c+d==24&&f[10])
{
printf("(%0.0f-%0.0f)*%0.0f+%0.0f=24\n",a,b,c,d);
f[10]=0;
}
if((a-b)*c-d==24&&f[33])
{
printf("(%0.0f-%0.0f)*%0.0f-%0.0f=24\n",a,b,c,d);
f[33]=0;
}
if(a*b/c+d==24&&f[28])
{
printf("%0.0f*%0.0f/%0.0f+%0.0f=24\n",a,b,c,d);
f[28]=0;
}
if(a*b/c-d==24&&f[11])
{
printf("%0.0f*%0.0f/%0.0f-%0.0f=24\n",a,b,c,d);
f[11]=0;
}
if((a-b)*c*d==24&&f[12])
{
printf("(%0.0f-%0.0f)*%0.0f*%0.0f=24\n",a,b,c,d);
f[12]=0;
}
if((a+b)*c*d==24&&f[13])
{
printf("(%0.0f+%0.0f)*%0.0f*%0.0f=24\n",a,b,c,d);
f[13]=0;
}
if((a+b)*c/d==24&&f[14])
{
printf("(%0.0f+%0.0f)*%0.0f/%0.0f=24\n",a,b,c,d);
f[14]=0;
}
if((a-b)*c/d==24&&f[15])
{
printf("(%0.0f-%0.0f)*%0.0f/%0.0f=24\n",a,b,c,d);
f[15]=0;
}
if((a+b+c)*d==24&&f[16])
{
printf("(%0.0f+%0.0f+%0.0f)*%0.0f=24\n",a,b,c,d);
f[16]=0;
}
if((a+b-c)*d==24&&f[17])
{
printf("(%0.0f+%0.0f-%0.0f)*%0.0f=24\n",a,b,c,d);
f[17]=0;
}
if((a-b-c)*d==24&&f[18])
{
printf("(%0.0f-%0.0f-%0.0f)*%0.0f=24\n",a,b,c,d);
f[18]=0;
}
if((a*b+c)*d==24&&f[19])
{
printf("(%0.0f*%0.0f+%0.0f)*%0.0f=24\n",a,b,c,d);
f[19]=0;
}
if((a/b+c)*d==24&&f[29])
{
printf("(%0.0f/%0.0f+%0.0f)*%0.0f=24\n",a,b,c,d);
f[29]=0;
}
if((a*b-c)*d==24&&f[20])
{
printf("(%0.0f*%0.0f-%0.0f)*%0.0f=24\n",a,b,c,d);
f[20]=0;
}
if((a/b-c)*d==24&&f[30])
{
printf("(%0.0f/%0.0f-%0.0f)*%0.0f=24\n",a,b,c,d);
f[30]=0;
}
if((a*b+c)/d==24&&f[21])
{
printf("(%0.0f*%0.0f+%0.0f)/%0.0f=24\n",a,b,c,d);
f[21]=0;
}
if((a*b-c)/d==24&&f[22])
{
printf("(%0.0f*%0.0f-%0.0f)/%0.0f=24\n",a,b,c,d);
f[22]=0;
}
if(a*b+c+d==24&&f[23])
{
printf("%0.0f*%0.0f+%0.0f+%0.0f=24\n",a,b,c,d);
f[23]=0;
}
if(a*b+c-d==24&&f[24])
{
printf("%0.0f*%0.0f+%0.0f-%0.0f=24\n",a,b,c,d);
f[24]=0;
}
if(a*b-c-d==24&&f[25])
{
printf("%0.0f*%0.0f-%0.0f-%0.0f=24\n",a,b,c,d);
f[25]=0;
}
if(a*b+c*d==24&&f[26])
{
printf("%0.0f*%0.0f+%0.0f*%0.0f=24\n",a,b,c,d);
f[26]=0;
}
if(a*b-c*d==24&&f[27])
{
printf("%0.0f*%0.0f-%0.0f*%0.0f=24\n",a,b,c,d);
f[27]=0;
}
if((a-b/c)*d==24&&f[31])
{
printf("(%0.0f-%0.0f/%0.0f)*%0.0f=24\n",a,b,c,d);
f[31]=0;
}
if((a+b/c)*d==24&&f[32])
{
printf("(%0.0f+%0.0f/%0.0f)*%0.0f=24\n",a,b,c,d);
f[32]=0;
}
}
}
}
for(w=0;w<34;w++)
if(!f[w])
i[1]=0;
if(i[1])
puts("Sorry,no answer!!!");
}
呵呵,这里好像一行不够长,粘贴过去就应该好了。
试试吧!