mo_leaf 2014-01-03 08:48 采纳率: 0%
浏览 986

一个C编写的求24点问题,求大神帮忙纠错

#include

int main()
{
int mode,i,j,k,sum,p,q,flag=1;
int a[4];
for(i=0; i<4; i++)
{
scanf("%d",&a[i]);
}
while(a[0]+a[1]+a[2]+a[3]!=0)
{
flag=1;
for(i=0; i<4 && flag; i++)
{
for(j=i+1; j<4 && flag; j++)
{
for(mode=0; mode<6 && flag; mode++)
{
sum=a[i];
switch(mode)
{
case 0: sum+=a[j];break;
case 1: sum-=a[j];break;
case 2: sum*=a[j];break;
case 3: if(a[j]) sum/=a[j];break;
case 4: sum=a[j]-sum; break;
case 5: if(sum) sum=a[j]/sum; break;
}
for(p=0; p<4; p++)
{
if(p!=i && p!=j)
break;
}
for(q=0; q<6 && flag; q++)
{
switch(q)
{
case 0: sum+=a[p];break;
case 1: sum-=a[p];break;
case 2: sum*=a[p];break;
case 3: if(a[p]) sum/=a[p];break;
case 4: sum=a[p]-sum; break;
case 5: if(sum) sum=a[j]/sum; break;
}
k=6-i-j-p;
if(sum+a[k]==24 || sum-a[k]==24 || sum*a[k]==24 )
{
flag=0;
}
else if(a[k]!=0)
{
if(sum/a[k]==24)
{
flag=0;
}
}
}

p=6-p-i-j;
for(q=0; q<6 && flag; q++)
{
switch(q)
{
case 0: sum+=a[p];break;
case 1: sum-=a[p];break;
case 2: sum*=a[p];break;
case 3: if(a[p]) sum/=a[p];break;
case 4: sum=a[p]-sum; break;
case 5: if(sum) sum=a[j]/sum; break;
}
k=6-i-j-p;
if(sum+a[k]==24 || sum-a[k]==24 || sum*a[k]==24 )
{
flag=0;
}
else if(a[k])
{
if(sum/a[k]==24)
{
flag=0;
}
}
}
}
}
}
if(flag)
printf("NO\n");
else
printf("YES\n");
for(i=0; i<4; i++)
scanf("%d",&a[i]);
}
return 0;
}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 16:24
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?