博弈论吧 关注:71,903贴子:118,719
  • 1回复贴,共1

一道编程题,我本人不擅长博弈呢?请教各位。

只看楼主收藏回复

甲乙两个人用一个英语单词玩游戏。两个人轮流进行,每个人每次从中删掉任意一个字母,如果剩余的字母序列是严格单调递增的(按字典序a < b < c <....<z),则这个人胜利。两个人都足够聪明(即如果有赢的方案,都不会选输的方案 ),甲先开始,问他能赢么?
输入: 一连串英文小写字母,长度不超过15,保证最开始的状态不是一个严格单增的序列。
例如: 输入 bad, 则甲可以删掉b或者a,剩余的是ad或者bd,他就赢了,输出1。
又如: 输入 aaa, 则甲只能删掉1个a,乙删掉一个a,剩余1个a,乙获胜,输出0。
个人比较欠缺博弈知识,所以初步说下自己的思路。
首先,输入字符是随机的唯一要求就是不能是单增的。换而言之就是说,不会出现甲随便拿掉任何一个字母就赢的这种情况。
这时甲会先搜索整个数组,如果当下无法在第一次里面决定胜负,那么他一定要不能让乙获胜赢了。同理乙也是这么想的。
如果字符串是偶数个的话,抽到最后是甲获胜。
反之是乙获胜。这是我目前终结出来的资料。我但是我知道这些东西却依然没有办法去构建我的算法。希望得到大伙的帮助


IP属地:江西1楼2013-12-05 16:00回复
    直接上机做下


    2楼2013-12-08 10:02
    回复