演算法題 台階Nim遊戲(Python)

2021-10-14 07:00:49 字數 694 閱讀 6799

現在,有乙個n級台階的樓梯,每級台階上都有若干個石子,其中第ii級台階上有ai個石子(i≥1)。

兩位玩家輪流操作,每次操作可以從任意一級台階上拿若干個石子放到下一級台階中(不能不拿)。

已經拿到地面上的石子不能再拿,最後無法進行操作的人視為失敗。

問如果兩人都採用最優策略,先手是否必勝。

輸入格式

第一行包含整數n。

第二行包含n個整數,其中第i個整數表示第i級台階上的石子數ai。

輸出格式

如果先手方必勝,則輸出「yes」。

否則,輸出「no」。

資料範圍

1≤n≤10^5

1≤ai≤10^9

輸入樣例:

3

2 1 3

輸出樣例:

yes
與奇數石堆有關,與偶數石堆無關。

n = int(input())

nums = list(map(int, input().split()))

res = 0

for i in range(n):

if i % 2 == 0:

res ^= nums[i]

if res == 0: print('no')

else: print('yes')

演算法題 Nim遊戲(Python)

給定n堆石子,兩位玩家輪流操作,每次操作可以從任意一堆石子中拿走任意數量的石子 可以拿完,但不能不拿 最後無法進行操作的人視為失敗。問如果兩人都採用最優策略,先手是否必勝。輸入格式 第一行包含整數n。第二行包含n個數字,其中第 i 個數字表示第 i 堆石子的數量。輸出格式 如果先手方必勝,則輸出 y...

博弈論 台階Nim遊戲

現在,有乙個nn級台階的樓梯,每級台階上都有若干個石子,其中第ii級台階上有aiai個石子 i 1i 1 兩位玩家輪流操作,每次操作可以從任意一級台階上拿若干個石子放到下一級台階中 不能不拿 已經拿到地面上的石子不能再拿,最後無法進行操作的人視為失敗。問如果兩人都採用最優策略,先手是否必勝。根據樣例...

LeetCode演算法題292 Nim遊戲解析

你和你的朋友,兩個人一起玩 nim遊戲 桌子上有一堆石頭,每次你們輪流拿掉 1 3 塊石頭。拿掉最後一塊石頭的人就是獲勝者。你作為先手。你們是聰明人,每一步都是最優解。編寫乙個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。示例 輸入 4 輸出 false 解釋 如果堆中有 4 塊石頭,那麼你...