谁有二十四24点游戏免费下载的代码

二十四点是一种益智游戏,它能在游戏中锻炼人们的心算,它往往要求人们将四个数字进行加减乘除
(允许使用括号)求得二十四。
24点游戏算法/二十四点
利用计算程序来完成这个计算二十四点的程序
首先穷举的可行性问题。我把
如下分成三类----
1、 无括号的简单表达式。
2、 有一个括号的简单表达式。
3、 有两个括号的较复杂表达式。
穷举的开始我对给出的四个数进行排列,其可能的种数为4*3*2*1=24。我利用一个
实现四个数的排列,算法如下:
/* ans[] 用来存放各种排列组合的
/* c[] 存放四张牌的数组 */
/* k[] c[]种四张牌的代号,其中k
=I+1。 用它来代替c[]做处理,考虑到c[]中有可能出现相同数的情况 */
/* kans[] 暂存生成的排列组合 */
/* j 嵌套循环的次数 */
正如上面函数中提到的,在完成四张牌的排列之后,在表达式中添加运算符号。由于只有四张牌,所以只要添加三个运算符号就可以了。由于每一个运算符号可重复,所以计算出其可能的种数为4*4*4=64种。仍然利用嵌套函数实现添加运算符号的穷举,算法如下:
  /* ans[],j同上。sy[]存放四个运算符号。h为表达式形式。*/
  好了,接下来我再考虑不同表达式的处理。刚才我已经将表达式分为三类,是因为添加三个括号对于四张牌来说肯定是重复的。对于第一种,无括号自然不用另行处理;而第二种情况由以下代码可以得出其可能性有六种,其中还有一种是多余的。
  这个for循环给出了添加一个括号的可能性的种数,其中m、n分别为添加在表达式中的左右括号的位置。我所说的多余的是指m=0,n=8,也就是放在表达式的两端。这真是多此一举,呵呵!最后一种情况是添加两个括号,我分析了一下,发现只可能是这种形式才不会是重复的----(a b)(c d)。为什么不会出现嵌套括号的情况呢?因为如果是嵌套括号,那么外面的括号肯定是包含三个数字的(四个没有必要),也就是说这个括号里面包含了两个运算符号,而这两个运算符号是被另外一个括号隔开的。那么如果这两个运算符号是同一优先级的,则肯定可以通过一些转换去掉括号(你不妨举一些例子来试试),也就是说这一个括号没有必要;如果这两个运算符号不是同一优先级,也必然是这种形式((a+-b)*/c)。而*和/在这几个运算符号中优先级最高,自然就没有必要在它的外面添加括号了。
  综上所述,所有可能的表达式的种数为24*64*(1+6+1)=12288种。哈哈,只有一万多种可能性(这其中还有重复),这对于电脑来说可是小case哟!所以,对于穷举的可行性分析和实现也就完成了。
  接下来的问题就是如何对有符号的简单表达式进行处理。这是栈的一个著名应用,那么什么是栈呢?栈的概念是从日常生活中货物在货栈中的存取过程抽象出来的,即最后存放入栈的货物(堆在靠出口处)先被提取出去,符合“先进后出,后进先出”的原则。这种结构犹如子弹夹。
  在栈中,元素的插入称为压入(push)或入栈,元素的删除称为弹出(pop)或退栈。
  栈的基本运算有三种,其中包括入栈运算、退栈运算以及读栈顶元素,这些请参考相关
资料。根据这些基本运算就可以用数组模拟
  那么作为栈的著名应用,表达式的计算可以有两种方法。
  第一种方法----
  首先建立两个栈,
栈OPS。其中,操作数栈用来记忆表达式中的操作数,其栈顶指针为topv,初始时为空,即topv=0;运算符栈用来记忆表达式中的运算符,其栈顶指针为topp,初始时,栈中只有一个表达式结束符,即topp=1,且OPS(1)=‘;’。此处的‘;’即表达式结束符。
  然后自左至右的扫描待处理的表达式,并假设当前扫描到的符号为W,根据不同的符号W做如下不同的处理:
  1、 若W为操作数
  2、 则将W压入操作数栈OVS
  3、 且继续扫描下一个
  4、 若W为运算符
  5、 则根据运算符的性质做相应的处理:
  (1)、若运算符为左括号或者运算符的优先级大于运算符栈栈顶的运算符(即OPS(top)),则将运算符W压入运算符栈OPS,并继续扫描下一个字符。
  (2)、若运算符W为表达式结束符‘;’且运算符栈栈顶的运算符也为表达式结束符(即OPS(topp)=’;’),则处理过程结束,此时,操作数栈栈顶元素(即OVS(topv))即为表达式的值。
  (3)、若运算符W为右括号且运算符栈栈顶的运算符为左括号(即OPS(topp)=’(‘),则将左括号从运算符栈谈出,且继续扫描下一个符号。
  (4)、若运算符的右不大于运算符栈栈顶的运算符(即OPS(topp)),则从操作数栈OVS中弹出两个操作数,设先后弹出的操作数为a、b,再从运算符栈OPS中弹出一个运算符,设为+,然后作运算a+b,并将运算结果压入操作数栈OVS。本次的运算符下次将重新考虑。
  第二种方法----
  首先对表达式进行线性化,然后将线性表达式转换成
序列以便进行求值。
  那么什么是表达式的线性化呢?人们所习惯的表达式的表达方法称为中缀表示。中缀表示的特点是运算符位于运算对象的中间。但这种表示方式,有时必须借助括号才能将运算
达清楚,而且处理也比较复杂。
  1929年,
逻辑学家Lukasiewicz提出一种不用括号的逻辑符号体系,后来人们称之为波兰表示法(Polish notation)。波兰表达式的特点是运算符位于运算对象的后面,因此称为后缀表示。在对波兰表达式进行运算,严格按照自左至右的顺序进行。下面给出一些表达式及其相应的波兰表达式。
  表达式 波兰表达式
OK,所谓表达式的线性化是指将中缀表达的表达式转化为波兰表达式。对于每一个表达式,利用栈可以把表达式变换成波兰表达式,也可以利用栈来计算波兰表达式的值。
至于转换和计算的过程和第一种方法大同小异,这里就不再赘述了。
下面给出转换和计算的具体实现程序----
这样这个程序基本上就算解决了,回过头来拿这个程序来算一算文章开始的那个问题。哈哈,算出来了,原来如此简单----(6-3)*10-6=24。
计时制/二十四点
24小时计时制二十四点指的是零点
同名手机游戏/二十四点
游戏信息应用类别: 棋牌天地
应用开发:ustb__zhongjiahong
应用版本: 1.0.0.0
应用大小: 45.00 KB
应用语言:
正版价格:
:WinMobile 7.1游戏介绍给出4正整数,系统就会推算出能得到24的数学式子。该游戏仅供大家娱乐。
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与***联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:13次
参与编辑人数:9位
最近更新时间: 08:54:24
贡献光荣榜
扫码下载APP【原】有关二十四点游戏的几个小问题【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:562,263贴子:
【原】有关二十四点游戏的几个小问题收藏
如果您是计算24点的发烧友,您一定听说过1、5、5、5这个经典的计算24点考题。这道题的***是(5-1÷5)×5,最大的特别之处运算中采用了分数,只有允许使用分数才能求解。其实这样的题目不下10道,如2、4、10、10,还有3、3、7、7等。实际上这个***往往也不是令人满意的。有的软件对每道题目仅提供一个***,而不管实际的解法有多少种。而有的版本刚好相反,提供了***的所有排列方式。这意味着,对于1、2、3、4这四个数,尽管只有1×2×3×4一种解法,而列出的***包含4×3×2×1、2×1×4×3等多达24种! 一方面,如果有多种计算方式,我们应该提供所有***,而不仅是其中一个***;另一方面,我们应该避免重复提供相同***的不同形式。给出所有***是比较容易的,这里我们只讨论如何避免重复提供相同***的不同形式。比如1、1、3、8这四个数,1×1×3×8与8×3×1×1应该等效的,***中只需提供其中一个。那么如何认定两个式子是等效的呢?如果其中一个式子能通过若干次加法交换律和乘法交换律转换为另一个式子,则认为是等效的。因此1×1×3×8与8×3×1×1、1×3×1×8、1×8×3×1都是等效的,但与1-1+3×8不是等效的。减法、除法按与加法、乘法相似的方式处理,这样5+10×2-1与5-1+2×10,5×10÷2-1与10÷2×5-1分别也是等效的。 在明确等效规则后,还需要解决随之而来的两个问题:程序如果根据该规则对两个式子进行比较呢?软件应该选择哪一个式子作为提供给用户的标准***呢?这两个问题可以用同一种方案解决,那就是建立一个排序规则,被比较的式子都按该排序规则使用加法交换律和乘法交换律进行转换,直到演化为一个“标准”的式子,最后看得到的结果是否一样。而提供给用户的***,就是这个“标准”的式子。 怎样才算“标准”的式子呢?
产销量连年位于国内喷码机行业前列!
我去 我也想过这个问题很久 不过是在是太复杂了无限排列组合爆出所有24点的程序我写过 就几十行而已但是对分析出来的组合进行去括号判重复这些东西太浪费时间了。我个人认为最好的方法是在生成阶段进行判断 而不是结束之后...不知道其他大神什么意见
到数学吧找***
登录百度帐号推荐应用数学二十四点游戏有什么技巧吗?
数学二十四点游戏有什么技巧吗?
09-10-17 &
算24点的技巧 “巧算24点”是一种数学游戏,游戏方式简单易学,能健脑益智,是一项极为有益的活动. “巧算24点”的游戏内容如下:一副牌中抽去大小王剩下52张,(如果初练也可只用1~10这40张牌)任意抽取4张牌(称牌组),用加、减、乘、除(可加括号)把牌面上的数算成24.每张牌必须用一次且只能用一次,如抽出的牌是3、8、8、9,那么算式为(9--8)×8×3或3×8+(9--8)或(9--8÷8)×3等. “算24点”作为一种扑克牌智力游戏,还应注意计算中的技巧问题.计算时,我们不可能把牌面上的4个数的不同组合形式----去试,更不能瞎碰乱凑.这里向大家介绍几种常用的、便于学习掌握的方法: 1.利用3×8=24、4×6=24求解. 把牌面上的四个数想办法凑成3和8、4和6,再相乘求解.如3、3、6、10可组成(10--6÷3)×3=24等.又如2、3、3、7可组成(7+3--2)×3=24等.实践证明,这种方法是利用率最大、命中率最高的一种方法. 2.利用0、11的运算特性求解. 如3、4、4、8可组成3×8+4--4=24等.又如4、5、J、K可组成11×(5--4)+13=24等. 3.在有解的牌组中,用得最为广泛的是以下六种解法:(我们用a、b、c、d表示牌面上的四个数) ①(a--b)×(c+d) 如(10--4)×(2+2)=24等. ②(a+b)÷c×d 如(10+2)÷2×4=24等. ③(a-b÷c)×d 如(3--2÷2)×12=24等. ④(a+b-c)×d 如(9+5--2)×2=24等. ⑤a×b+c--d 如11×3+l--10=24等. ⑥(a-b)×c+d 如(4--l)×6+6=24等. 游戏时,同学们不妨按照上述方法试一试. 需要说明的是:经计算机准确计算,一副牌(52张)中,任意抽取4张可有1820种不同组合,其中有458个牌组算不出24点,如A、A、A、5. 不难看出,“巧算24点”能极大限度地调动眼、脑、手、口、耳多种感官的协调活动,对于培养我们快捷的心算能力和反应能力很有帮助. 参考资料:处处抄,处处找!!!
请登录后再发表评论!
首先.电脑是不存在随机这样东西..因为电脑所用到的随机也不可能是完全的随机吧....怎么也是有个初始条件的吧..至于那个初始条件能不能模拟那就是另一回事了..纯粹数学上的话..应该把开了的区域和没开的区域分开..开了的区域和没开的区域之间的没开的第一行叫做他们的边界.这样把扫雷分成三部分.开了的区域叫做A区..然后没开的区域的第一行叫做边界叫做B区..剩下的没开的区域就叫C区..那么很明显..(1)B区的雷数受A区的数字影响..也就是B区的雷有各种各样的分布.但是每种分布都有各自的概率..这个概率可以由A区的数字分布非常准确的求得...(2)然后没开的雷数减去B区的雷数就是C区的雷数..C区的雷数除以C区的格子数便是C区开出雷的概率..因此C区的概率分布要由B区的概率分布来决定..C区的开出雷的概率是等概率分布.(3)你每打开一个格子A区的雷的概率分布便会变化一次...因此你需要不断的去更新你的概率分布..以上是从雷的概率分布去讨论的...以下是从你已经掌握了足够的技巧..然后你能够充分的去利用这些技巧..最终你是否能成功完成这个游戏来讨论....首先..雷的分布是各种各样的...有些雷的分布是可以推出来的..而有些雷是不能推出来的...是一个死角那样的分布...因此就需要讨论各种雷的分布组合....找出各种死角分布的雷..很明显..(1)四个角落出现死角分布的雷的概率是最多的..而其中的某个格子出现雷的概率是最高的..这个概率能通过具体分析来求得是一个具体的概率..用P1来表示...因此..你第一个开的地方应该是出现死角分布概率最高的格子..第二个开的格子是死角分布第二高的格子..这样就能提高你以后完成这个游戏的概率..(2)理论上四个角落是对称的..你开完四个角落之后..死角的组合就会又再次发生变化..你需要重新去讨论..然后求得最可能出现死角的分布的格子.而这个概率可以根据分类来准确求得..用P2来表示..(3)理论上根据对称的原理..也是开四个角落中的某个格子..(4)如此类推...你用这个方法不踩到雷的概率是P=(1-P1)*(1-P2)*(1-P3)....*(1-PN)..(5)当1-P&PN的时候..你就应该放弃继续用这个方法来提高你的成功率...这个***比随机数要好很多吧...
请登录后再发表评论!
其实也不算难,熟能生巧。要说找规律,好像不太好找。要是有不会的,可以发信息给我,我帮你把他算出来。&font color=#0556A3&参考文献:&/font&也许能帮助你,祝你好运!!!
请登录后再发表评论!

参考资料

 

随机推荐