nx cae高级仿真求解24点 求解

算二十四点的游戏规则与基本方法
算二十四点的益处与游戏规则&
“巧算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等。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。求解24点……难道这个题目真的无解嘛!!!虎扑数学大神们你们在哪!!!
1,6,7,13这四个数字如何运算求出24?朋友出的题,难道我这个学渣了,求广大充满智慧的jrs解答
[&此帖被whm在 23:01修改&]
先抢个沙发,想到再来回答。
应该是J Q K算10点吧
引用2楼 @ 发表的:
应该是J Q K算10点吧
我擦,理解错了,智商捉急
引用2楼 @ 发表的:
应该是J Q K算10点吧
哥们你太机智了。。那这题不用算了。。。
没有人算得出来嘛!!!还是大家都在算!!!还是根本算不出来!!!
就加减乘除的话无解
我怎么算了等于24.1429
*6只能这样了,不然无解吧
这题无解的,楼主可以去qj你舍友了
引用10楼 @ 发表的:
通法:求导 阶乘 求和 阶乘
那么到底如何解出……
引用6楼 @ 发表的:
就加减乘除的话无解
我也是这么觉得。。。。
引用12楼 @ 发表的:
我也是这么觉得。。。。
就是这样 1-13凑出的24点有四五百种无解了
引用5楼 @ 发表的:
没有人算得出来嘛!!!还是大家都在算!!!还是根本算不出来!!!
我算了等于24.1429 可以不
@ 脑筋急转弯 6倒过来做9 9-7=2 13-1=12 2*12=24
引用15楼 @ 发表的:
@ 脑筋急转弯 6倒过来做9 9-7=2 13-1=12 2*12=24
给你的机智点个赞!!!
用了各种算法,实在全部出来~~~
13 7 6-1-1我真是太机智了。
引用11楼 @ 发表的:
那么到底如何解出……
((A')!+(B')!+(C')!+(D')!)!....
引用17楼 @ 发表的:
((A')! (B')! (C')! (D')!)!....我刚刚也想到这个万能公式,哈哈
您需要登录后才可以回复,请或者
3413人参加团购448.00元&1199.00元
1852人参加团购178.00元&399.00元
585人参加团购349.00元&899.00元
819人参加团购298.00元&799.00元
2436人参加团购399.00元&999.00元
548人参加团购369.00元&1299.00元
1736人参加团购599.00元&799.00元
2234人参加团购499.00元&899.00元
1215人参加团购269.00元&899.00元
269人参加团购159.00元&499.00元
1444人参加团购858.00元&1299.00元
81人参加团购368.00元&699.00元24点游戏及其算法
1.问题描述
24点是棋牌类益智游戏,要求结果等于二十四,一起来玩玩吧!这个游戏用扑克牌更容易来开展。拿一副牌,抽去大小王后(初练也可以把J/Q/K也拿去),剩下1~10这40张牌(以下用1代替A)。任意抽取4张牌(称为牌组),用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须且只能用一次。如抽出的牌是3、8、8、9,那么算式为(9-8)×8×3=24
这里对问题进行扩展,可以输入的牌数为4~52张,其均属于一副牌,那么需要计算一串输入卡牌能否计算出24点,并且输入运算公式
2.算法分析
其实有一个很简单的方式,深度优先搜索DFS,但是这个是很无脑的。这里就不作介绍了。没啥意思
1、首先我们要对这个问题进行数学抽象。
定义1:对于有理数组成的多重集合S ,f(S) 定义如下:
如果 S 是空集或只包含一个元素,则 f(S)=S ;否则 f(S)=∪ f( ( S-{r1, r2}) ∪ {r} ) ,对于每一个 r=r1+r2 , r1-r2 , r1×r2,r1÷r2(r2≠0),且r1, r2取遍 S 中所有元素的组成的二元组。
定义1说明:要计算集合S中的元素通过四则混合运算所能得到的所有值,我们只需要任取 S 中的两个元素 r1 , r2 ,分别计算 r1 , r2 的加减乘除运算,然后用所得的结果与 S 中剩下的其他数字进行四则混合运算。只要取遍所有的 r1 ,r2 ,最后得到的所有结果的并集就是 S 中的元素通过四则混合运算所能得到的所有值的集合。根据上述定义,在本问题中,集合 S 就是由输入中给定的卡牌进行四则运算组成的集合
2、定义2:给定两个多重集合 S1 , S2,定义
comb( S1, S2 ) = ∪ { r1+r2 , r1-r2, r1×r2, r1÷r2(r2≠0) }
其中 ( r1 , r2 ) ∈ S1 × S2。
定义2实际上定义了两个集合中的元素两两进行加减乘除运算所能得到的结果集合。
3、那么其实就有一个定理:
对于有理数组成的多重集合 S ,如果 S 至少有两个元素,则
f(S)=∪ comb( f(S1), f(S - S1) )
其中 S1 取遍 S 的所有非空真子集。
利用上面的定义和定理,例如对于S={1,2,3,4},
f(S) = comb( f({ 1 }), f({ 2,3,4}) )∪ comb( f({ 2 }), f({ 1,3,4}) )… ∪ comb( f({ 1,2 }), f({3,4 }) ) ∪ …;
在这里的计算中,你会发现计算f({ 2,3,4})时需要计算一次f({ 3,4}),计算f({ 1,3,4})也需要计算一次f({ 3,4}),这样就产生了计算冗余。为了消除冗余,简单的方式就是记录已经计算过的,如果该集合之前已经计算过,直接使用即可。
为了表述方便,这里采用位域表示,这样就可以快速表示集合中有哪些数。譬如还是以上面的例子来说,n(S)=4,那么就需要用到四位,f[0001]=f[1]代表f({1}),f[0101]=f[5]=f({1,3})这样。那么f[2^ n - 1 ] (这里n=4)=f[15]=f[1111]=f({1,2,3,4})
那么防止重复计算,到这里也许就稍微清晰一点了,即存储中间结果,如果这个已经算过了,那么直接使用之前已经计算的结果来计算即可,不需再迭代计算。
4、循环方式:
定义计算集合计算符号X,即前面的comb(S1,S2)= f[S1]Xf[S2]
a. 先初始化f[xx1xxx]这种类型的集合,因为可以直接得到其结果
b. 例如f[0011],即f[0001]Xf[0010]计算而来,并且将这个中间结果存储,同理可以算出f[0101]=f[0100]Xf[0001],和f[0110]
c. 那么f[0111]就可以通过f[0011]/f[0101]/f[0110]等集合算出
d. 以此类推算出f[1111]集合的数值
e. 判断全集是否有24的结果……
a-e中,已经大部分阐述了这个计算方式的思维,但是有一个细节没有说清楚,那就是,如何计算一个f[ m ] (m&2^n-1)
5、计算f[m] (m&2^n-1)
因为采用位域表示,那么设i从0开始,到m,
如果m&i=i(这里就说明i位域的元素是均属于m集合,那么就可以进行集合运算comb(或者说是X))
即计算f[i]Xf[m-i]
一直计算到i=m为止,到这里你会发现当m-i’ = i时,会有一次重复计算,所以这里只需要计算i & m-i的场景即可。
6、伪代码如下
for i ← 0 to 2^n-1
do F[i]←Φ;
for i ← 0 to n-1
do F[2^i]← {x[i]};
for x ← 1 to 2^n-1 do
for i ← 1to x-1 do
if x∧i=i then
then F[x] ← F[x] + comp(F[i],F[j]);
17. return F[ 2 n ?1] ;
3.进行的优化
丢弃除不尽
丢弃过大,不超过24 * 13 * 2
-和/考虑顺序,+和*不需考虑顺序
乘法考虑越界,越界就丢弃。
4.示例代码
代码见github,顺便也实现了输入计算公式,那个是采用指针的想法,指向计算符号两端的值(大概是这个意思)
5.计算空间优化
这个因为需要存储所有的计算结果,但内存是有限的
另外还需要计算基本是优化过后的全集,当n & 12之后就会发现很花时间了。这个我也找到了优化的方式。下次再写吧。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:201970次
积分:3582
积分:3582
排名:第9837名
原创:199篇
转载:58篇
评论:10条
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 高级会计师 的文章

 

随机推荐