游戲說明
有一組數字,p1和p2輪流選擇,最后達到一種狀態定勝負。
用遞歸求解:
- p1開始游戲,遍歷所有p1可選的可能。
- 如果剩下的游戲狀態讓p2開始,都是導致p2贏,則p1失敗。
- 如果剩下的游戲狀態讓p2開始,有一個是p2失敗,則p1贏。
def game(初始狀態):
for i in set(剩余所有狀態):
if game(剩余所有狀態 - i) == False:
return True
# 遍歷完所有可能狀態,全為對手贏(True), 返回 輸(False)
return False
例題:
https://leetcode.com/problems/can-i-win/#/description
https://leetcode.com/problems/predict-the-winner/#/description