求帮助!关于24点的问题 我编程不能找出所有的方法 但是自己不知道怎么改 请求帮助,谢谢
输入任意四个整数(0到10),运算符只有加减乘除,还有括号.每个数只能且必须用一次。要求判断这些表达的结果中是否有24。如果有,输出计算表达式:如输入4,6,1,1 输出 4*6*1*1 =24 (允许有括号)。#include<stdio.h>
double Sum(double a,double b,int i)
{
double sum;
if(i==0)
sum=a+b;
else if(i==1)
sum=a-b;
else if(i==2)
sum=a*b;
else if(i==3)
{
if(b==0)
return -1000000000000;
else
sum=a/b;
}
return sum;
}
int main()
{
int i1,i2,i3,i4,j1,j2,j3,s[4];
char a[4]={'+','-','*','/'};
double s1,s2,s3;
printf("请输入0-10之间的数:");
scanf("%d%d%d%d",&s[0],&s[1],&s[2],&s[3]);
printf("\n");
for(i1=0;i1<4;i1++)
{
for(i2=0;i2<4;i2++)
{
if(i2!=i1)
{
for(j1=0;j1<4;j1++)
{
s1=Sum(s[i1],s[i2],j1);
for(i3=0;i3<4;i3++)
{
if(i3!=i2&&i3!=i1)
{
for(j2=0;j2<4;j2++)
{
s2=Sum(s1,s[i3],j2);
for(i4=0;i4<4;i4++)
{
if(i4!=i1&&i4!=i2&&i4!=i3)
{
for(j3=0;j3<4;j3++)
{
s3=Sum(s2,s[i4],j3);
if(s3==24.0)
{
if((a[j1]=='+'||a[j1]=='-')&&(a[j2]=='*'||a[j2]=='/'))
{printf("1q");
printf("(%d%c%d)%c%d%c%d=24\n",s[i1],a[j1],s[i2],a[j2],s[i3],a[j3],s[i4]);
}
else if((a[j2]=='+'||a[j2]=='-')&&(a[j3]=='*'||a[j3]=='/'))
{printf("2q");
printf("(%d%c%d%c%d)%c%d=24\n",s[i1],a[j1],s[i2],a[j2],s[i3],a[j3],s[i4]);
}
else
{printf("3q");
printf("%d%c%d%c%d%c%d=24\n",s[i1],a[j1],s[i2],a[j2],s[i3],a[j3],s[i4]);
}
}
if
}
}
}
}
}
}
}
}
}
}
return 0;
}