关于24点游戏的编程思路与基本算法1.doc_第1页
关于24点游戏的编程思路与基本算法1.doc_第2页
关于24点游戏的编程思路与基本算法1.doc_第3页
关于24点游戏的编程思路与基本算法1.doc_第4页
全文预览已结束

下载本文档

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

文档简介

关于24点游戏的编程思路与基本算法设计思路: 在算24点时候,我的第一反应便是穷举法!在算24点时候,我的思路就是列出4个数字加减乘除的各种可能性,包括括号的算法。我们可以将表达式分成以下几种:首先我们将4个数设为a,b,c,d,其中算术符号有+,-,*,/,。其中有效的表达式有a,ab-cd,等等。列出所有有效的表达式。其中我们用枚举类型将符号定义成数字常量,比如用1表示+,2表示-等。如下是我对穷举法的一种编程语言。在编程的头部要对变量做下定义。 在输入数字前我做了定义,因为题目规定是1-10内不相同的数字。所以我就想到了if的判断语句来写此句话。即if(a=b)|(a=c)|(a=d)|(b=c)|(b=d)|(c=d)|(a10)|(b10)|(c10)|(d10)则输入非法。当输入合法时,我就在想,4个数都有各自的排列,所以运用数学的排列组合来算的的,分别是A44=24种组合,打个比方,我入、输入a,b,c,d,那么就有abdc,badc,bacd等24种不同的组合,在这里我就不一一列举,在源代码当中我会一一写在程序里。 在运算时,我开始想,得从括号分类起,有零括号的,一个括号的,两个括号的。以下是表达式,当然,*并不是,*只是符号的统称。零个括号的:a*b*c*d。一个括号的:(a * b * c) * d,a * (b * c) * d。两个括号的:(a * b) * (c * d),(a * b) * c) * d,a * (b * c) * d接下来就是对每一种进行分析判断。以上就是穷举法的基本实现算法 首先穷举的可行性问题。我把表达式如下分成三类:1、 列出四个数的所有排序序列组合(共有A44=24种组合)。2、 构筑一个函数,列出所有运算表达式。3、 输入数据计算。流程图:输入四个数是否满足条件?否是先进行24种组合的排列。代入运算式中运算。能否输出24?否能输出不能组成24输出结果源代码:#includeint main(void) void jisuan(float x,float y,float z,float w);/声明函数 float a,b,c,d; fanhui: /做标记 printf(请输入4个数据n); printf( 第一个数:); scanf(%f,&a); printf( 第二个数:); scanf(%f,&b); printf( 第三个数:); scanf(%f,&c); printf( 第四个数:); scanf(%f,&d); printf(输出所有算法如下:n); if(a10)|(b10)|(c10)|(d10)|(a=b)|(a=c)|(a=d)|(b=c)|(b=d)|(c=d) printf(你输入的输入不对,重新输入n); goto fanhui;/ 返回标记,重复输入 / 以下是a .b.c.d 的所有排列组合情况 jisuan(a,b,c,d); jisuan(a,b,d,c); jisuan(a,c,d,b); jisuan(a,c,b,d); jisuan(a,d,b,c); jisuan(a,d,c,b); jisuan(b,a,c,d); jisuan(b,a,d,c); jisuan(b,c,a,d); jisuan(b,c,d,a); jisuan(b,d,c,a); jisuan(b,d,a,c); jisuan(c,a,b,d); jisuan(c,a,d,b); jisuan(c,b,d,a); jisuan(c,b,a,d); jisuan(c,d,a,b); jisuan(c,d,b,a); jisuan(d,a,b,c); jisuan(d,a,c,b); jisuan(d,b,c,a); jisuan(d,b,a,c); jisuan(d,c,a,b); jisuan(d,c,b,a); return 0;void jisuan(float x,float y,float z,float w) /运算表达式的所有情况 if (x+y+z+w=24) printf(%.0f+%.0f+%.0f+%.0f=24n,x,y,z,w); else if (x+y+z-w=24) printf(%.0f+%.0f+%.0f-%.0f=24n,x,y,z,w); else if (x+y)*(z+w)=24) printf(%.0f+%.0f)*(%.0f+%.0f)=24n,x,y,z,w); else if (x-y)*(z+w)=24) printf(%.0f-%.0f)*(%.0f+%.0f)=24n,x,y,z,w); else if (x-y)*(z-w)=24) printf(%.0f-%.0f)*(%.0f-%.0f)=24n,x,y,z,w); else if (x+y+z)*w=24) printf(%.0f+%.0f+%.0f)*%.0f=24n,x,y,z,w); else if (x-y-z)*w=24) printf(%.0f-%.0f-%.0f)*%.0f=24n,x,y,z,w); else if (x+y-z)*w=24) printf(%.0f+%.0f-%.0f)*%.0f=24n,x,y,z,w); else if (x*y*z)/w=24) printf(%.0f*%.0f*%.0f)/%.0f=24n,x,y,z,w); else if (x*y)*(z+w)=24) printf(%.0f*%.0f)*(%.0f+%.0f)=24n,x,y,z,w); else if (x*y)*(z-w)=24) printf(%.0f*%.0f)*(%.0f-%.0f)=24n,x,y,z,w); else if (x*y)*z-w=24) printf(%.0f*%.0f)*%.0f-%.0f=24n,x,y,z,w); else if (x*y)*z+w=24) printf(%.0f*%.0f)*%.0f+%.0f=24n,x,y,z,w); else if (x*y*z*w=24) printf(%.0f*%.0f*%.0f*%.0f=24n,x,y,z,w); else if (x+y)+(z/w)=24) printf(%.0f+%.0f)+(%.0f/%.0f)=24n,x,y,z,w); else if (x+y)*(z/w)=24) printf(%.0f+%.0f)*(%.0f/%.0f)=24n,x,y,z,w); else if (x*y)+z+w=24) printf(%.0f*%.0f)+%.0f+%.0f=24n,x,y,z,w); else if (x*y)+z-w=24) printf(%.0f*%.0f)+%.0f-%.0f=24n,x,y,z,w); else if (x*y)-(z/w)=24) printf(%.0f*%.0f)-(%.0f/%.0f)=24n,x,y,z,w); else if (x*y)+(z/w)=24) printf(%.0f*%.0f)+(%.0f/%.0f)=24n,x,y,z,w); else if (x*y)-z-w=24) printf(%.0f*%.0f)-%.0f-%.0f=24n,x,y,z,w); else if (x*y)+(z*w)=24) printf(%.0f*%.0f)+(%.0f*%.0f)=24n,x,y,z,w); else if (x*y)-(z*w)=24) printf(%.0f*%.0f)-(%.0f*%.0f)=24n,x,y,z,w); else if (x*y)/(z*w)=24) printf(%.0f*%.0f)/(%.0f*%.0f)=24n,x,y,z,w); else if (x*y)/(z-w)=24) printf(%.0f*%.0f)/(%.0f-%.0f)=24n,x,y,z,w); else if (x*y)/(z+w)=24) printf(%.0

温馨提示

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

最新文档

评论

0/150

提交评论