7771每个数字只能用一次怎么等于24

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 19:46:38

7771每个数字只能用一次怎么等于24
7771每个数字只能用一次怎么等于24

7771每个数字只能用一次怎么等于24
8*(7-4)=24 8乘7减4的差 8*(7-4)=24 (7—4)×8 8乘7减4的差 8*(7-4)=24 (7-4)*8=24 在玩24点?.

不可能。

算不出来,我用程序算过了
#include
#include
struct
{
int isop;
double num;
}data[15];
int num[6],flag,used[6];
int x,n,temp[6];
char op[6];
ch...

全部展开

算不出来,我用程序算过了
#include
#include
struct
{
int isop;
double num;
}data[15];
int num[6],flag,used[6];
int x,n,temp[6];
char op[6];
char mod[5]="+-*/";
double fun(double a,char b,double c)
{
if(b=='/')
{
if(c==0)
return 1000000000;
return a/c;
}
else if(b=='+')
return a+c;
else if(b=='-')
return a-c;
else if(b=='*')
return a*c;
return 1000000000;
}
int cal()
{
int i,j,k;
double judge;
for(i=0;i<2*n-1;i++)
{
if(data[i].isop==1)
{
 judge=fun(data[i-1].num,data[i].num,data[i+1].num);
 if(judge==1000000000)
 return 0;
 data[i+1].num=judge;
 }
}
if(data[2*n-2].num==x)
return 1;
return 0;
}
int DFSop(int deep)
{
int i,j,k;
if(deep==n-1)
{
j=k=0;
for(i=0;i<2*n-1;i++)
{
if(i%2==0)
{
data[i].isop=0;
data[i].num=temp[j++];
}
else
{
data[i].isop=1;
data[i].num=op[k++];
}
}
if(cal())
return 1;
return 0;
}
for(i=0;i<4;i++)
{
op[deep]=mod[i];
if(DFSop(deep+1))
return 1;
}
return 0;
}
int DFSsort(int deep)
{
int i;
if(deep==n)
{
if(DFSop(0))
return 1;
return 0;
}
for(i=0;i {
if(used[i]==0)
{
used[i]=1;
temp[deep]=num[i];
if(DFSsort(deep+1))
return 1;
used[i]=0;
}
}
return 0;
}
main()
{
int i;
while(scanf("%d%d",&x,&n)!=EOF)
{
for(i=0;i scanf("%d",&num[i]);
flag=0;
memset(used,0,sizeof(used));
if(DFSsort(0))
printf("YES\n");
else
printf("NO\n");
}
}

收起