python算24点穷举法_24点游戏 C语言(穷举法)

#include &ltstdio.h&gt

#include &ltmath.h&gt

int XD(double s, double m)

{

if(fabs(s-m)&lt1e-6)return 1;

return 0;

}

double f(double s1,double s2,char m)

{

if(m == '+') return s1+s2;

if(m == '-') return s1-s2;

if(m == '*') return s1*s2;

if(m == '/')

{

if(XD(s2,0)) return 65536;

return s1/s2;

}

}

void main()

{

char Sign[6]=" +-*/";

int i,Fh1,Fh2,Fh3,Sx1,Sx2,Sx3,Sx4;

double s1,s2,s3,Data[5];

for(i=1;i&lt=4;i++)

scanf("%lf",&Data[i]);

FILE *fp = fopen("F:\\11\\1.txt","a");

for(Fh1=1;Fh1&lt=4;Fh1++)

for(Fh2=1;Fh2&lt=4;Fh2++)

for(Fh3=1;Fh3&lt=4;Fh3++)

for(Sx1=1;Sx1&lt=4;Sx1++)

for(Sx2=1;Sx2&lt=4;Sx2++)

for(Sx3=1;Sx3&lt=4;Sx3++)

for(Sx4=1;Sx4&lt=4;Sx4++)

for(i=1;i&lt=5;i++)

{

if(Sx1 != Sx2 && Sx1 != Sx3 &&Sx1 != Sx4 &&Sx2 != Sx3 &&Sx2 != Sx4 &&Sx3 != Sx4)

{

if(i==1)

{

s1= f(Data[Sx1],Data[Sx2],Sign[Fh1]);

s2 = f(Data[Sx3],Data[Sx4],Sign[Fh2]);

s3 = f(s1,s2,Sign[Fh3]);

if(XD(s3,24.0))

{

fprintf(fp,"第一步=%lf,%lf,%c, =%lf\n",Data[Sx1],Data[Sx2],Sign[Fh1],s1);

fprintf(fp,"第二步=%lf,%lf,%c, =%lf\n",Data[Sx3],Data[Sx4],Sign[Fh2],s2);

fprintf(fp,"第三步=%lf,%lf,%c, =%lf\n",s1,s2,Sign[Fh3],s3);

}

}

if(i==2)

{

s1= f(Data[Sx1],Data[Sx2],Sign[Fh1]);

s2 = f(s1,Data[Sx3],Sign[Fh2]);

s3 = f(s2,Data[Sx4],Sign[Fh3]);

if(XD(s3,24.0))

{

fprintf(fp,"第一步=%lf,%lf,%c, =%lf\n",Data[Sx1],Data[Sx2],Sign[Fh1],s1);

fprintf(fp,"第二步=%lf,%lf,%c, =%lf\n",s1,Data[Sx3],Sign[Fh2],s2);

fprintf(fp,"第三步=%lf,%lf,%c, =%lf\n",s2,Data[Sx4],Sign[Fh3],s3);

}

}

if(i==3)

{

s1= f(Data[Sx2],Data[Sx3],Sign[Fh1]);

s2 = f(s1,Data[Sx1],Sign[Fh2]);

s3 = f(s2,Data[Sx4],Sign[Fh3]);

if(XD(s3,24.0))

{

fprintf(fp,"第一步=%lf,%lf,%c, =%lf\n",Data[Sx2],Data[Sx3],Sign[Fh1],s1);

fprintf(fp,"第二步=%lf,%lf,%c, =%lf\n",s1,Data[Sx1],Sign[Fh2],s2);

fprintf(fp,"第三步=%lf,%lf,%c, =%lf\n",s2,Data[Sx4],Sign[Fh3],s3);

}

}

if(i==4)

{

s1= f(Data[Sx2],Data[Sx3],Sign[Fh1]);

s2 = f(s1,Data[Sx4],Sign[Fh2]);

s3 = f(s2,Data[Sx1],Sign[Fh3]);

if(XD(s3,24.0))

{

fprintf(fp,"第一步=%lf,%lf,%c, =%lf\n",Data[Sx2],Data[Sx3],Sign[Fh1],s1);

fprintf(fp,"第二步=%lf,%lf,%c, =%lf\n",s1,Data[Sx4],Sign[Fh2],s2);

fprintf(fp,"第三步=%lf,%lf,%c, =%lf\n",s2,Data[Sx1],Sign[Fh3],s3);

}

}

if(i==5)

{

s1= f(Data[Sx3],Data[Sx4],Sign[Fh1]);

s2 = f(s1,Data[Sx2],Sign[Fh2]);

s3= f(s2,Data[Sx1],Sign[Fh3]);

if(XD(s3,24.0))

{

fprintf(fp,"第一步=%lf,%lf,%c, =%lf\n",Data[Sx3],Data[Sx4],Sign[Fh1],s1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值