hur.cn - 华软网

 热门搜索

  • 论文编号: 佚名
  • 论文字数: 10000 字
  • 支付金币: 5个
  • 金币充值: 点击查看金币充值
  • 资源类型: 毕业设计
  • 论文语言: 简体中文
  • 运行环境: WinXP/NT/Vista/Win7
  • 解压密码:
  • 评分等级: ★★★
  • 整理录入: 昕晨
  • 更新时间: 2021/8/6 23:33:38

设计介绍    


1.2 24点游戏的算法
1.2.1 24点算法(1)
24点游戏的算法,其中最主要的思想就是穷举法。所谓穷举法就是列出4个数字加减乘除的各种可能性,包括括号的算法。咱们能够将表达式分成以下几种:首先咱们将4个数设为a,b,c,d,,其中算术符号有+,—,*,/,(,)。其中有效的表达式有a*(b-c/b),a*b-c*d,等等。列出所有有效的表达式。其中咱们用枚举类型将符号定义成数字常量,比如用1表示+,2表示-等。以下是我对穷举法的一种编程语言。在编程的头部要对变量做下定义。其中a,b,c,d的范围是1到13。由于传统的24点游戏是纸牌游戏,而纸牌游戏的数字就是从1到13,其中a是1,K是13,Q是12,J是11,其余的就是牌面的数字。这就需要在定义变量的时候要有限制。在vc++中的MFC编程中,在定义控件的变量范围能够直接填写变量的最大和最小,在此编程中的最大是13,最小是1。这就给编程写语句带来了方便(由于其自动会生成语句)。下面我介绍下穷举法的主要实现,咱们知道要实现24点的算法,就是通过4个数字,4个运算符号和2对括号(最多为2对),通过各种组合判断其结果是否为24。咱们用a,b,c,d取代4个数字。思量每种可能,总的算法就有7种可能。分别为:1,没括号的(形如a*b*c*d);
2有括号的(形如(a * b) * c * d);3有括号的(形如(a * b * c) * d);4有括号的(形如a * (b * c) * d);5有括号的(形如(a * b) * (c * d));6有括号的(形如((a * b) * c) * d);7有括号的(形如(a * (b * c)) * d)。接下来就是对每一种举行分析判断。咱们拿2种情况做为例子,一种是没括号的,一种有括号的。先拿没括号的分析。咱们知道没括号的式子包括其运算符和数字总共为7个(3个运算符,4个数字),于是咱们定义一个数组,用于寄存运算符和数字。运算符咱们能够用枚举变量来定义,首先咱们通过循环语句形成一个表达式子(但这个表达式的运算循序是乱的)。表达式子有很多种情况,利用循环语句咱们能够一一将其写出,例如(a+b+c+d,a+b+c-d,a+b+c*d,a+b+c/d….等等)生成表达式子的后,接着就是判别运算顺序。在没有括号存留的情况下,咱们令其先运算*,/。这个顺序的选择很轻松,咱们能够定义一个bool类型的函数,咱们对数组举行扫描,当扫描到/,*,其前往真值,就直接举行运算。依次照样举行扫描,当所有的/,*运算都举行为止,接着将/,*运算生成的结果合并栈(即将运算的结果放在一个变量中),接着就对其与下一个数字举行运算,直到所有的值都计算出来了,最后将最后运算结果放于一个变量中。咱们将这个变量的值和24相减,如果其值是在1E-6之外,则说明此运算式能计算出24。接下来咱们来做第2种有括号的算法,有括号的算法和没括号的算法就是在判断运算循序的时候有所差异。咱们知道,括号就是用来改变运算顺序而增加的。判断括号的前后顺序,咱们一样能够用一个bool类型的函数来判别,在生成表达式要判断其运算顺序时,咱们首先扫描表达式寄存的数组,如果扫描到左括号,则将先对左括号后面的式子举行运算,接着在是对/,*的优先级举行计算。在第2种(形如(a * b) * c * d)的情况下,咱们先将a,b先举行运算,生成其值,并将结果寄存与另一个变量中,接着将获得的开端结果和c和d举行运算,最后获得总的结果。将其总结果和24相减,若其值小于1E-6则说明此表达式能算出24。接下来几种有括号的算法和第2种情况类似,咱们不做详细的说明。以上就是穷举法的基本实现算法。

 


上一源码:VC排队系统的仿真与应用毕业设计
下一源码:局域网信息发布毕业设计

下载地址    

  • VC24点游戏的开发和实现毕业设计

下载说明

  • 为防止盗链,本站资源部分有解压密码,解压密码点击查看
  • 如果您发现该资源不能下载,请通知管理员;
  • 为了保证您快速的下载,推荐使用迅雷或网际快车等专业工具下载;
  • 为确保所下资源能正常使用,请使用WinRAR v3.80或以上版本解压本站资源;
  • 本站所收集的下载资源均来源于网络,如果有侵犯您的版权,请来信告知,我们会马上处理;
  • 本站所提供的资源仅供学习和研究,请勿用于商业用途,请在下载后24小时内删除;
  • 本站不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害!