今天你玩24点了吗?

 

24点的规则十分简单:                                    

从52张牌里面随便抽4张,经过加减乘除和括号进行运算,得到24点即为胜利。

数学化后就是:

有1、2、3……13 共13组,可重复抽样,抽取4次,得到的4个数进行加减乘除和括号组合的运算,结果要求是24。

简单的:

比如 1 2 3 4显然 1* 2 *3*4为24,而1 1 1 1 显然最大只能产生4而无法产生24……

那么给4个数字之后除了乱试之外,有没有一些方法可以保证你可以断言它有没有解呢? 很容易,暴力遍历。

一、对于两个数a,b:

     产生的可能的运算结果一定包含于下面的集合中:{  a+b,a-b,b-a,a*b,a/b(b不为0),b/a(a不为0) },这个十分容易,小学生也可以轻易的想出来。记作R(ab)

二、 那么继续,三个数a,b,c的运算结果有哪些呢? 

     对于abc的全排列的每一种,先求出前两个数的可能结果集合B,c和集合B中每一个元素再进行前面的计算,最后得到集合C 

      将abc全排列的每一种计算出的C并起来就可以得到所有可能的结果了。

简单来说,就是 R(abc)=R ( R(ab) c)

三、 对于四个数:

     R(abcd)=R(R(ab)R(cd)) ∪ R(R(abc)d)

此时随便输入4个位于1-13的数字,就可以断定它是否可以组成24点,若可以,还可以告诉我们是如何算出的,如果不可以,则会提示no 。

当然其实还有其它的方法来做这件事情,但没有上面的直接,比如可以使用后缀表达式来表示计算式,这样就不用关注括号的问题了,比如三个数字abc的结果:a b c op op, b c op a op两种结构,当然对于abc的全排列的每一种都会产生对应的结果。

更有趣的是,如果遍历所有可能的情况就可以得到所有可以实现24点的情况,那么所有可能的情况是什么呢?上面已经提到了是一个可重复抽样,那么计算公式就是C(n-m+1,m),具体而言就是

         for(i from 1 to 13)

                  for (j from i to 13)

                           for( p from j to 13)

                                     for(q from p to 13)

                                               generate [i j p q]

最后得到的ijpq就是一次符合条件的抽样了。

随便举个例子,输入4 7 9 12 会告诉你解法是9+12-(4-7)~

最后发现,24点的所有可能抽样1820种中,有1362中都可以组成24点!概率为74.83%

         24 的因子很多:2 4 6 8 12 ,在超过20的数中,组成24点的可能数是最大的!所以24点游戏才比较多样好玩~

         20点以下有一些数字的成功概率比24点还要大,最极端的:2点的成功率高达96%,也就是说,如果玩2点的话,抽到的4张牌基本上都可以组成2点,所以凑不出来的话基本上是你自己的问题啦。当然2太小了,说不去不够气魄,而且2的因子比较少,凑成2 的方法比较少,基本上就是通过1+1,1*2,2/1或者a-(a-2)等方法来凑,感觉比较容易试出来。

最后附一章图片:纵坐标为成功概率(可以凑出该点数的种类数/所有可能抽到牌的种类数),横纵标为对应的点数(从0到100)

容易发现24是20之后最高的点,并且36、48、60、72也是比较高的峰值,因为他们的因子都比较多,但为何它们的种类数没有24点高呢?因为这些数比较大,用4个1-13的数值来凑的话反而导致没有24点多,但如果采用比如更多张的牌(比如两幅扑克),72、60等的成功率应该是更高的。

时间: 2024-10-09 22:46:41

今天你玩24点了吗?的相关文章

java 24点算法实现

最近闲来无事,突然怀念起小时候和堂兄表姐们经常玩24点游戏,于是就琢磨着是不是开发一个安卓手机版本.然后上网上一搜,发现已经被别人给开发烂了啊.不过这只能说明这个小游戏要想赚广告费很难了,但是拿来锻炼和在妹纸面前装逼还是很有价值的,嘿嘿,想到这里,我最终还是花了3天时间开发了一个小游戏出来. 算法实现 在网上试玩了一个flash的版本,发现还需要实现计算所有正确的结果,然后网上稍微百度了下思路,就开始自己实现了.我开始时大概的思路就是穷举出所有的数字和算式的排列组合,然后一一进行验算,中间碰到两

hihoCoder1304:24点

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 周末,小Hi和小Ho都在家待着. 在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副扑克来打发时间. 小Ho:玩点什么好呢? 小Hi:两个人啊,不如来玩24点怎么样,不靠运气就靠实力的游戏. 小Ho:好啊,好啊. <经过若干局游戏之后> 小Ho:小Hi,你说如果要写个程序来玩24点会不会很复杂啊? 小Hi:让我想想. <过了几分钟> 小Hi:我知道了!其实很简单嘛. 提示:24点 输入 第1行:

hihocoder 九十八周 搜索一 24点

题目1 : 搜索一·24点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 周末,小Hi和小Ho都在家待着. 在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副扑克来打发时间. 小Ho:玩点什么好呢? 小Hi:两个人啊,不如来玩24点怎么样,不靠运气就靠实力的游戏. 小Ho:好啊,好啊. <经过若干局游戏之后> 小Ho:小Hi,你说如果要写个程序来玩24点会不会很复杂啊? 小Hi:让我想想. <过了几分钟> 小Hi:我知道了!其实很简单嘛.

hiho一下 第九十八周 题目1 : 搜索一&#183;24点

题目1 : 搜索一·24点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 周末,小Hi和小Ho都在家待着. 在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副扑克来打发时间. 小Ho:玩点什么好呢? 小Hi:两个人啊,不如来玩24点怎么样,不靠运气就靠实力的游戏. 小Ho:好啊,好啊. <经过若干局游戏之后> 小Ho:小Hi,你说如果要写个程序来玩24点会不会很复杂啊? 小Hi:让我想想. <过了几分钟> 小Hi:我知道了!其实很简单嘛.

【天之林谜坊群】2017年3月24日群猜谜会谜题

[天之林谜坊群]2017年3月24日群猜谜会谜题 1.分别于戴笠故乡(邓丽君五字歌词一句)开在春风里/彭爱民2.一再栽花把草除(动物生态学名词)三化/韩庆铭3.雄心虚心还宽心(字)花/佚名4.纵横合作在冀中(杜甫诗目)田舍/吴乐荣5.“观玄妙观无玄妙”(礼貌用语)再见/李玉虹6.此风不可长(围棋术语)收气/陈汉臣7.扫黄战役获全胜(世界史名词)色当惨败/朱建铭8.调和是非用芳心(字)主/陈铃滨9.岂能虚度年华(成语二)不可一世.碌碌无为/吴智远10.尽去作商贾(山西地名)大同市/章镳11.<再别

Python秒算24点,行还是不行?

周末闲来无事,看到隔壁家的老王在和隔壁家的媳妇玩24点,就进屋看了看.发现老王是真不行啊,那不行,这也不行. 就连个24点都玩不过他媳妇,给他媳妇气的,啥都不能满足,这不能,那也不能. 我坐下来和他媳妇玩了两把,那都是无出其右,把把赢! 我要走的时候,他媳妇还挽留我多玩几把,有意思. 为了能让老王在他媳妇面前抬起头来,我决定帮他一把--就用python写了个算24点的玩意,老王对我感激涕零. 什么是24点 我们先来约定下老王和他媳妇玩的24点规则:给定4个任意数字(0-9),然后通过+,-,*,

MVC代码中如何调用api接口

关于代码解释,为了方便读者浏览时更好理解代码的含义,我把注释都写在代码里面了.因为一开始我只考虑到功能上的实现并没有考虑代码的优化所以代码我就全写在一个页面了.至于那些生成扑克牌类.计算类等代码优化方面的内容就留给想要实现这个24点算法游戏的读者自己去完善吧. 可直接访问.对于一些获取数据操作不影响系统正常运行的和数据的,多余的验证是没有必要的,这个时候可以直接访问,例如获取当天的天气预报信息,获取网站的统计信息等. 基本上每次做页面,都会有这么一个效果,所以预先准备几个这样的效果,会很有用处,

hdu 1204 糖果大战

Problem Description 生 日Party结束的那天晚上,剩下了一些糖果,Gandon想把所有的都统统拿走,Speakless于是说:"可以是可以,不过我们来玩24点,你不是 已经拿到了一些糖果了吗?这样,如果谁赢一局,就拿走对方一颗糖,直到拿完对方所有的糖为止."如果谁能算出来而对方算不出来,谁就赢,但是如果双方都能 算出或者都不能,就算平局,不会有任何糖果的得失. Speakless是个喜欢提前想问题的人,既然他发起了这场糖果大战,就自然很想赢啦(不然可就要精光了-_

hdu 1204 糖果大战 (Markov Chains求期望)

糖果大战 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2336    Accepted Submission(s): 797 Problem Description 生日Party结束的那天晚上,剩下了一些糖果,Gandon想把所有的都统统拿走,Speakless于是说:"可以是可以,不过我们来玩24点,你不是已经拿到了一些糖果了吗