程式設計之美 NIM(1)一排石頭的遊戲

2021-06-20 19:20:16 字數 1043 閱讀 1736

題目大意:

n塊石頭排成一行,兩個玩家依次取石頭,每個玩家可以取其中任意一塊或者相鄰的兩塊,最後能將剩下的石頭一次取光的玩家獲勝。

分析:

1、n=1、n=2,必勝

2、n=3,先取者取中間1塊石頭,左右還剩下各1塊石頭,無論第二個人怎麼取,己方必勝

3、n=4,先取者取中間2塊石頭,還是左右各剩一塊,己方必勝

4、n>4時,先取者只要取中間的元素,n為奇數取中間乙個,偶數取中間兩個,將石頭分為兩部分,然後無論第二個人怎麼取,先取者只要在另一部分的同樣位置取走同樣多的石頭,則最後先取者必勝

所以對任意n,先取者必勝。

拓展:

1、判定最後取光石頭的人輸

分析:

1、n=1,必輸

2、n=2,只要取走一塊就轉化成了1,必勝

3、n=3,只要取走任意相鄰的兩個就轉化成了1,必勝

4、n=4,無論怎麼取都是必輸

5、n=5,因為只要取走最左邊的1個或者最右邊的1個就轉化成了4,為必勝態

6、n=6,因為只要取走前面2塊石頭就轉化成了4,為必勝態

若剩下兩部分:

1)若剩下的兩部門一部分是必勝態,一部分是必輸態,如果第二個人先從必輸態中取,則無論怎麼取最後的石頭總會落到他的手中,然後己方還剩下必勝態,先取必勝;

如果第二個人先從必勝態中取,己方和對方都是想讓對方先取必輸態的石頭,即都想在必勝態中敗,所以無法考慮此類情況

若兩部分都是必勝態,第二個人總會有必勝態的優先權,所以總能保證己方敗

若兩部分都是必敗態,己方和對方都想要在必敗態下敗下陣來,所以無法考慮此類情況

可以看出,找尋必勝態是行不通的,換換找尋必敗態試試:

要想保證己方必敗,需要滿足以下條件:

1、無論己方怎麼取,剩下的石頭(1或兩部分)都構成必勝態

這個是不可能的,因為我可以直接取第二塊石頭,將第一塊石頭空下來,第一塊石頭為必敗態,所以也無法考慮這種情況

所以,綜上所述,當n>6時,勝負難定

程式設計之美1 11NIM 1 一排石頭遊戲

解決問題的思路 當題目中有 n 出現時,可以從假設n 1開始,逐步掌握規律 擴充套件問題1 若規定最後取光石頭的人輸,先取者是否有必勝策略 當n 1時,必輸 當n 2時,必勝 當n 3時,1,2,3 先取1,2或者先取2,3,有必勝策略 當n 4時,1,2,3,4 無論怎樣取,對手不放水,先取者輸,...

程式設計之美 MIN 1 一排石頭的遊戲

1.原題 1.1 題目 n塊石頭排成一行,每塊石頭有各自固定的位置。兩個玩家依次取石頭,每個玩家每次可以取其中任意一塊石頭,或者相鄰的兩塊石頭,石頭在遊戲過程中不能移位 即編號不會改變 最後能將剩下的石頭一次取光的玩家獲勝。這個遊戲有必勝策略嗎?1.2 解答 已知 石頭數量為n,假設兩個玩家分別為玩...

程式設計之美 一排石頭的遊戲(拓展問題)

程式設計之美 一書中1.11章節介紹了nim遊戲的取勝問題。n塊石頭排成一行,每塊石頭有各自固定的位置。兩個玩家依次取石頭,每個玩家每次可以取其中任意一塊石頭,或相鄰的兩塊石頭,石頭在遊戲過程中不能移位 即編號不會改變 最後能將剩下的石頭一次取光的玩家獲勝。在這樣的規則下,先取的玩家可以在第一步取走...