十八罗汉大战四大金刚对四大金刚,麻烦帮忙解答,谢谢

十八罗汉对四大金刚的编程求解与优化
题目和图片详见/p/注意这不是一个题目,是一大类的题目,花色的不同直接导致解法的不同,甚至有解还是无解,但牌点是一样的。多牌方18张,都是2,KKK,QQQ,99,77,66,55,44,3少牌方4张,是AA,JJ或者AA,10 10,少牌方的花色没关系出牌规则如下:以上两方,轮流出牌,多牌先出,3最小2最大,可出单张,一对,三条带一对(部分牌局不允许三条带一对,即fullhouse),顺子五张,同花五张,不能三带一,不能连对,应牌张数必须相同,可以不应,多牌先出,先出完者胜上面链接中的题目的牌面如下:闲:黑964红KQ64草KQ9753方2KQ75庄:AAJJ刚开始我是在街上看到有人摆这种局,想破解之。后来上网一查知道这是一类题目,以便于摆局的人只要输了牌就立即换新牌,防止其它人效仿的再赢。而正因为题目变化无穷,对于我这种又懒又笨又不想动脑子的人来说,写个代码解决掉是最方便的了。又由于这是博弈问题,我直接用棋类的博弈框架来写,先决定数据结构,用两个64bit int记录双方牌的状态,另一32bit记录当前状态,和可使用规则,出牌张数限制,出牌的最小点等等信息,然后写个alphabeta,再然后GenMove,注意这里没有使用MakeMove和UnMakeMove,我是GenMove的时候直接生成出所有move的状态。不过最麻烦的是写GenMove,要按规则一条一条的写,还要想怎么生成着法比较高效,比如顺子就每4bit or merge以后,查找存在连续5个1存在的时候才去dfs生成具体的move。不过由于是要找必胜方案,alphabeta的作用不大,并且每步先手一方必须出牌,所以很多棋类可以用的剪枝手段在这并不适用。对于象棋来说,直接就是杀棋搜索了。我没管它那么多,我先写好GenMove和alphabeta,就直接跑了,我先用简单些的牌去测试,瞬间出结果,然后换成题目中的牌但去掉多牌方两张来算,速度还算可以,但所有牌都加上以后,搜索时间就要几分钟了。当然这是意料中的事,各种优化手段还没使上呢。在介绍我更多的优化办法前在这做个插曲,当时我程序做了一些优化,能在10秒内出结果的时候,就在网上到处找题目和相应的答案,以便于检验程序是否解答正确。其中找到另一人写的解牌程序,满怀欢喜,觉得可以用来做对比测试和检验了。不过一看软件介绍,居然是个共享软件,要收费 & - ,并且在天涯到处能找到作者的宣传。。。就一个暴力解个破牌都能收费,永久注册劲爆价:388元!!比一个专业级棋软的收费还贵。。。好吧,开这么高的价,我就看看它有多大的本事。于是就下了一个试用版本,在我的xp下跑。不过我的xp是在本本的ubuntu下vb出来的,不过应该不影响我的测试吧,我想。输入了个网上常见的题目,一跑,等了20秒,发现程序占了500M内存,搞的系统要当了的样子,过了一会,那程序自己挂掉了,还生成了一个奇怪的dmp,搞的我郁闷,于是就发了邮件问作者,作者回复问我是什么题目,我就再回复了题目给他,并且问了一下为什么程序要占那么多内存和那个dmp是啥东西生成的,还问他QQ是多少。不过作者自此就再没回复我了。好吧,于是我等在家里的时候,用家里的4G内存的台式机来跑,结果用了10秒终于跑出来了,不过结果只有两种答案,就是闲家必胜还是必败。不过对于我足够了,做了若干个题目来测试,终于确定了我的程序的求解是正确无误的时候,我就准备开始做下一步的优化了。后来,优化到程序占用40M内存,在我本本虚拟的xp上2秒跑出结果,我感觉就差不多了,要如此
分享这篇日志的人也喜欢
大哥看直播吗
王者峡谷等你
想把自己唱给你听
第二天直播求关注求守护
新主播求支持
热门日志推荐
人人最热标签
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场

我要回帖

更多关于 十八罗汉 电视剧 的文章

 

随机推荐