关于24点游戏的编程思路与基本算法1.docVIP

关于24点游戏的编程思路与基本算法1.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于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)||(a0)||(a10)||(b0)||(b10)||(c0)||(c10)||(d0)||(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、 输入数据计算。 流程图: 源代码: #includestdio.h int 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((a0)||(a10)||(b0)||(b10)||(c0)||(c10)||(d0)||(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=24\n,x,y,z,w); else if (x+y+z-w==24) printf(%.0f+%.0f+%.0f-%.0f=24\n,x,y,z,w); else if ((x+y)*(z+w)==24) printf((%.0f+%.0f)*(%.0f+%.0f)=24\

文档评论(0)

tdmk868 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档