《24点游戏C语言代码及报告.docx》由会员分享,可在线阅读,更多相关《24点游戏C语言代码及报告.docx(5页珍藏版)》请在三一办公上搜索。
1、24点游戏C语言代码及报告24点游戏 一,问题分析 二十四点游戏规则: 给出4个数字,所给数字均为有理数,用加、减、乘、除把给出的数算成24每个数必须用一次且只能用一次,先算出结果者获胜。 步骤:比如下面的例子: 例:3、8、8、9, 答案1:83 答案2: 38 答案3:3 利用3824、4624求解 我的主要想法是 首先穷举的可行性问题。我把表达式如下分成三类 1、 无括号的简单表达式。 2、 有一个括号的简单表达式。 3、 有两个括号的较复4、 杂表达式。 穷举的开始我对给出的四个数进行排列,其可能的种数为4*3*2*1=24。我利用一个嵌套函数实现四个数的排列 二,源程序及注释 /首先
2、穷举的可行性问题。我把表达式如下分成三类 /1、 无括号的简单表达式。 /2、 有一个括号的简单表达式。 /3、 有两个括号的较复4、 杂表达式。 /穷举的开始我对给出的四个数进行排列,其可能的种数为4*3*2*1=24。我利用一个嵌套函数实现四个数的排列 #include #include using namespace std; int number=0; string sss5000; float cal(float a,float b,int p) switch(p) case 1:return a+b; case 2:return a-b; case 3:return a*b; ca
3、se 4:return a/b; case 5:return b-a; case 6:return b/a; string link(string a,string b,int p) string st=a; switch(p) case 1:st+=(+b);break; case 2:st+=(-+b);break; case 3:st+=(*+b);break; case 4:st+=(/+b);break; case 5:st=b+-+st;break; case 6:st=b+/+st;break; st=(+st+); return st; void putout1(string
4、c,int p) string st; st=link(c1,c2,p1); st=link(st,c3,p2); st=link(st,c4,p3); st=st.erase(0,1); st=st.erase(st.length-1,1); number+; sssnumber=st; void putout2(string c,int p) string st1,st2,st; st1=link(c1,c2,p1); st2=link(c3,c4,p3); st=link(st1,st2,p2); st=st.erase(0,1); st=st.erase(st.length-1,1);
5、 number+; sssnumber=st; void suan(float a,string c) int p4;int i;float sum,sum1,sum2; for(p1=1;p1=6;p1+) for(p2=1;p2=6;p2+) for(p3=1;p3=0&sum-241e-5)|(sum-24-1e-5) putout1(c,p); sum1=cal(a1,a2,p1); sum2=cal(a3,a4,p3); sum=cal(sum1,sum2,p2); if(sum-24=0&sum-241e-5)|(sum-24-1e-5) putout2(c,p); void di
6、sorder(float a,string c) float b5; string d5; int i,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; b1=ai;b2=aj;b3=ak;b4=al; d1=ci;d2=cj;d3=ck;d4=cl; suan(b,d); int main cout请输入四个数字; float a5; int i,j; string c5; for(i=1;iai;if(ai=10)ci=10 ci=int(ai)+0; disorder(a,c); int v=1,u=0; for(i=1;i=number;i+) v=1;for(j=1;ji;j+)if(sssi=sssj)v=0; if(v=1)coutsssiendl;u=1; if(u=0)cout无解endl; system(pause); return 0; 三,运行结果显示 ;else 四,调试和运行程序过程中产生的问题及采取的措施: