Re: [轉錄] 益智問題(拈 001,100,1枚~3倍)

看板puzzle作者 (菜心)時間15年前 (2009/04/20 22:39), 編輯推噓8(806)
留言14則, 4人參與, 最新討論串3/10 (看更多)
原文恕刪 以前上演算法時有看過類似的題目 只是當時的題目是兩倍 我把之前做的題目po出來給大家看看 Consider a variant of Nim game played by two players: Initially, at least two matches are placed on the table between two players. The first player removes as many matches as he likes, except that he must take at least one and he must leave at least one. Thereafter, each player in turn must remove at least one match and at most twice the number of matches his opponent just took. The player who removes the last match wins. Determine a winning strategy for this game. 這題我們後來找出的必勝法跟 Fibonacci數列 有關 也就是盡量拿完後剩下的數為 Fibonacci數 Fibonacci數列 定義 F(n) = F(n-1) + F(n-2) for n>2 F(1) = 1 F(2) = 2 假設目前剩下 N 支火柴 則先找最接近 N 且比 N 小的 F(k) 接下來的目標就是拿到剩下 F(k) 支火柴 也就是拿掉 N-F(k) 支火柴 如果沒辦法一次拿成功 則遞迴下去當作剩下 N-F(k) 支火柴的情況下去拿 拿完剩下 F(k) 支火柴時 接下來又輪到對方拿 不管對方拿完剩多少火柴 又可以繼續用上述的方法來拿 當然如果可以一次全部拿完時就一次拿 這樣就直接贏了 因此先手要輸的話 只有一開始的火柴數剛好為 Fibonacci數 時才會輸 不過這是兩倍的情形 原題目是三倍 我想用的技巧應該是差不多才對 以上 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.132.57

04/20 23:05, , 1F
請問n是不是應該大於等於3呀??
04/20 23:05, 1F

04/20 23:14, , 2F
還真是難懂啊....囧(攤手)
04/20 23:14, 2F

04/20 23:16, , 3F
可是,如果現在有32個,那拿法應該是32->29而不是32->21
04/20 23:16, 3F

04/20 23:17, , 4F
如果走32->21的話,對手可以拿11*2=22 > 21個,就贏了
04/20 23:17, 4F

04/20 23:26, , 5F
原PO意思 是如果一開始火柴的個數為Fibonacci數
04/20 23:26, 5F

04/20 23:26, , 6F
對於第一個取的人 是不利的...
04/20 23:26, 6F

04/20 23:28, , 7F
可是一開始的時候不見得是Fibonacci數啊
04/20 23:28, 7F

04/20 23:31, , 8F
如果一開始火柴的個數"不"為Fibonacci數 則是有利的
04/20 23:31, 8F

04/20 23:33, , 9F
可是這題的重點不就是在於,你知道對你有利,但你有沒有辦
04/20 23:33, 9F

04/20 23:34, , 10F
法在合理的時間內找到必勝方法
04/20 23:34, 10F

04/21 00:06, , 12F
game/104.htm 不會縮網址0.0
04/21 00:06, 12F

04/21 00:10, , 13F
這種方法真妙
04/21 00:10, 13F

04/21 17:40, , 14F
04/21 17:40, 14F
文章代碼(AID): #19x8aM01 (puzzle)
討論串 (同標題文章)
文章代碼(AID): #19x8aM01 (puzzle)