演算法題 Nim遊戲(Python)

2021-10-14 04:49:20 字數 620 閱讀 8286

給定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 塊石頭,那麼...