給定n堆石子,兩位玩家輪流操作,每次操作可以從任意一堆石子中拿走任意數量的石子(可以拿完,但不能不拿),最後無法進行操作的人視為失敗。
問如果兩人都採用最優策略,先手是否必勝。
輸入格式
第一行包含整數n。
第二行包含n個數字,其中第 i 個數字表示第 i 堆石子的數量。
輸出格式
如果先手方必勝,則輸出「yes」。
否則,輸出「no」。
資料範圍
1≤n≤10^5,
1≤每堆石子數≤10^9
輸入樣例:
2
2 3
輸出樣例:
yes
**
異或為0必輸,不為0必勝
n = int(input())
nums = list(map(int, input().split()))
res = 0
for num in nums:
res ^= num
if res == 0: print('no')
else: print('yes')
演算法題 台階Nim遊戲(Python)
現在,有乙個n級台階的樓梯,每級台階上都有若干個石子,其中第ii級台階上有ai個石子 i 1 兩位玩家輪流操作,每次操作可以從任意一級台階上拿若干個石子放到下一級台階中 不能不拿 已經拿到地面上的石子不能再拿,最後無法進行操作的人視為失敗。問如果兩人都採用最優策略,先手是否必勝。輸入格式 第一行包含...
LeetCode演算法題292 Nim遊戲解析
你和你的朋友,兩個人一起玩 nim遊戲 桌子上有一堆石頭,每次你們輪流拿掉 1 3 塊石頭。拿掉最後一塊石頭的人就是獲勝者。你作為先手。你們是聰明人,每一步都是最優解。編寫乙個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。示例 輸入 4 輸出 false 解釋 如果堆中有 4 塊石頭,那麼你...
無盡演算法之 Nim 遊戲
你和你的朋友,兩個人一起玩 nim 遊戲 桌子上有一堆石頭,每次你們輪流拿掉 1 3 塊石頭。拿掉最後一塊石頭的人就是獲勝者。你作為先手。你們是聰明人,每一步都是最優解。編寫乙個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。示例 輸入 4 輸出 false 解釋 如果堆中有 4 塊石頭,那麼...