编程之美 1.12 nim(2)
生活随笔
收集整理的這篇文章主要介紹了
编程之美 1.12 nim(2)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考:http://tieba.baidu.com/p/613078798?pn=1
有若干堆石頭,A,B分布依次取,一次只能選擇一堆,從這堆中選擇大于0的石頭,問:1,如果最后取光石頭的人獲勝,A在什么情況下獲勝?2,如果最后取光石頭的人失敗,A在什么情況下獲勝?
1. 在規則1下,先手獲勝的情況,在規則2下先手同樣獲勝
2. 規則1和規則2的取法不一樣。
設當石頭出現(1,1,1,...,X),x>1的情況下,稱進入小卡區域。
規則1:
先手面臨的局面必須是XOR(M1,M2,..,M3)!=0才能保證,先手獲勝;此時,先手必須調整堆,使得XOR(M1,M2,..,M3)=0;這樣就能保證先手最后獲勝。
規則2:
先手面臨的局面必須是XOR(M1,M2,..,M3)!=0才能保證,先手獲勝;此時,先手必須調整堆,使得XOR(M1,M2,..,M3)=0;這樣就能保證先手最后獲勝。
大家可以看出規則1和規則2的策略是一樣的,但是在規則2下,還要增加一個策略:當局面進入小卡區域時,當有偶數個1時,先手取x-1個石頭;當有奇數個1時,先手取x個石頭
但是有一個問題,如何保證當局面進入小卡區域時,正好該先手取?
總結
以上是生活随笔為你收集整理的编程之美 1.12 nim(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用8小时工作,用24小时思考
- 下一篇: 如何求两个向交矩形的交集的面积?