用 Python 判断我们是否在游戏中获胜的程序
假设我们正在玩一个两人游戏,其中有n个弹珠,并且在每一轮中,玩家必须取正平方数的弹珠。如果玩家拿不到那个平方数的弹珠,他/她就输了。因此,给定一个数字n,我们必须确定我们是否能赢得比赛。我们总是先转弯并选择最佳数量的弹珠。
因此,如果输入类似于14,则输出将为True。因为在第一回合,我们拿了9个弹珠。剩下5个弹珠,其他玩家最多可以从中取出4个弹珠,留下1个弹珠。所以,在下一回合,我们拿走最后一个弹珠,留下0个弹珠,对手无法移动。这样,我们就赢了。
示例
让我们看看以下实现以获得更好的理解-
from math import sqrt
def solve(n):
if n <= 0:
return False
ans = False
for i in range(int(sqrt(n)), 0, -1):
if i * i > n:
break
ans = ans | (not solve(n - i * i))
if ans:
return ans
return ans
print(solve(14))输入
14输出结果
True
热门推荐
10 预祝中秋简短的祝福语
11 表白词语祝福语简短英文
12 开业贺卡祝福语简短高级
13 住院送饭的祝福语简短
14 朋友马上生产祝福语简短
15 姐妹生日祝福语原创简短
16 同事姐妹离别祝福语简短
17 生日祝福语孙悟空简短
18 写信高考祝福语简短英语