点游戏C语言代码及报告_第1页
点游戏C语言代码及报告_第2页
点游戏C语言代码及报告_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、24 点游戏 一,问题分析二十四点游戏规则:给出 4 个数字,所给数字均为有理数,用加、减、乘、除(可加括号)把给出的数算成 24每个数必须用一次且只能用一次,先算出结果者获胜。步骤:比如下面的例子: 例:3、8、8、9,答案 1: (98)x 8X3答案 2:3X 8 -( 98)答案 3: (98-8)x 3利用 3X 8 = 24、4X 6= 24求解我的主要想法是 首先穷举的可行性问题。我把表达式如下分成三类1 、 无括号的简单表达式。2、 有一个括号的简单表达式。3、 有两个括号的较复 4、 杂表达式。穷举的开始我对给出的四个数进行排列,其可能的种数为 4*3*2*1=24 。我利用

2、一个嵌套 函数实现四个数的排列二,源程序及注释/ 首先穷举的可行性问题。我把表达式如下分成三类/1 、 无括号的简单表达式。/2 、 有一个括号的简单表达式。/3 、 有两个括号的较复 4、 杂表达式。/ 穷举的开始我对给出的四个数进行排列,其可能的种数为 4*3*2*1=24 。我利用一个嵌 套函数实现四个数的排列#include <iostream>#include <string>using namespace std;int number=0;string sss5000;float cal(float a,float b,int p)switch(p)case

3、 1:return a+b; case 2:return a-b; case 3:return a*b;case 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);bre

4、ak;case 5:st=b+"-"+st;break;case 6:st=b+"/"+st;break; st="("+st+")"return st;void putout1(string 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

5、 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);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<=6;p3+)sum=cal(a1,a2,p1);sum=

6、cal(sum,a3,p2);sum=cal(sum,a4,p3);if(sum-24>=0&&sum-24<1e-5)|(sum-24<=0&&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-24<1e-5)|(sum-24<=0&&sum-24>-1e-5) putout2(c,p);void disorder(floa

7、t 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;elsefor(i=1;i<=4;i+)cin>>ai;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;j<i;j+)if(sssi=sssj)v=0; if(v=1)cout<<sssi<<end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论