您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 24点游戏C语言代码及报告
24点游戏一,问题分析二十四点游戏规则:给出4个数字,所给数字均为有理数,用加、减、乘、除(可加括号)把给出的数算成24.每个数必须用一次且只能用一次,先算出结果者获胜。步骤:比如下面的例子:例:3、8、8、9,答案1:(9—8)×8×3答案2:3×8÷(9—8)答案3:(9—8÷8)×3利用3×8=24、4×6=24求解我的主要想法是首先穷举的可行性问题。我把表达式如下分成三类——1、无括号的简单表达式。2、有一个括号的简单表达式。3、有两个括号的较复4、杂表达式。穷举的开始我对给出的四个数进行排列,其可能的种数为4*3*2*1=24。我利用一个嵌套函数实现四个数的排列二,源程序及注释//首先穷举的可行性问题。我把表达式如下分成三类——//1、无括号的简单表达式。//2、有一个括号的简单表达式。//3、有两个括号的较复4、杂表达式。//穷举的开始我对给出的四个数进行排列,其可能的种数为4*3*2*1=24。我利用一个嵌套函数实现四个数的排列#includeiostream#includestringusingnamespacestd;intnumber=0;stringsss[5000];floatcal(floata,floatb,intp){switch(p){case1:returna+b;case2:returna-b;case3:returna*b;case4:returna/b;case5:returnb-a;case6:returnb/a;}}stringlink(stringa,stringb,intp){stringst=a;switch(p){case1:st+=(++b);break;case2:st+=(-+b);break;case3:st+=(*+b);break;case4:st+=(/+b);break;case5:st=b+-+st;break;case6:st=b+/+st;break;}st=(+st+);returnst;}voidputout1(stringc[],intp[]){stringst;st=link(c[1],c[2],p[1]);st=link(st,c[3],p[2]);st=link(st,c[4],p[3]);st=st.erase(0,1);st=st.erase(st.length()-1,1);number++;sss[number]=st;}voidputout2(stringc[],intp[]){stringst1,st2,st;st1=link(c[1],c[2],p[1]);st2=link(c[3],c[4],p[3]);st=link(st1,st2,p[2]);st=st.erase(0,1);st=st.erase(st.length()-1,1);number++;sss[number]=st;}voidsuan(floata[],stringc[]){intp[4];inti;floatsum,sum1,sum2;for(p[1]=1;p[1]=6;p[1]++)for(p[2]=1;p[2]=6;p[2]++)for(p[3]=1;p[3]=6;p[3]++){sum=cal(a[1],a[2],p[1]);sum=cal(sum,a[3],p[2]);sum=cal(sum,a[4],p[3]);if((sum-24=0&&sum-241e-5)||(sum-24=0&&sum-24-1e-5))putout1(c,p);sum1=cal(a[1],a[2],p[1]);sum2=cal(a[3],a[4],p[3]);sum=cal(sum1,sum2,p[2]);if((sum-24=0&&sum-241e-5)||(sum-24=0&&sum-24-1e-5))putout2(c,p);}}voiddisorder(floata[],stringc[]){floatb[5];stringd[5];inti,j,k,l;for(i=1;i=4;i++)for(j=1;j=4;j++){if(j==i)continue;for(k=1;k=4;k++){if(k==i||k==j)continue;for(l=1;l=4;l++){if(l==i||l==j||l==k)continue;b[1]=a[i];b[2]=a[j];b[3]=a[k];b[4]=a[l];d[1]=c[i];d[2]=c[j];d[3]=c[k];d[4]=c[l];suan(b,d);}}}}intmain(){cout请输入四个数字;floata[5];inti,j;stringc[5];for(i=1;i=4;i++){cina[i];if(a[i]==10)c[i]=10;elsec[i]=int(a[i])+'0';}disorder(a,c);intv=1,u=0;for(i=1;i=number;i++){v=1;for(j=1;ji;j++)if(sss[i]==sss[j])v=0;if(v==1){coutsss[i]endl;u=1;}}if(u==0)cout无解endl;system(pause);return0;}三,运行结果显示四,调试和运行程序过程中产生的问题及采取的措施:
本文标题:24点游戏C语言代码及报告
链接地址:https://www.777doc.com/doc-4616501 .html