3#巴十博弈
题目
你正在和朋友玩一个游戏:
桌子上有一堆石头,每一次你们都会从中拿出1到3个石头。
拿走最后一个石头的人赢得游戏。游戏开始时,你是先手。
假设两个人都绝对理性,都会做出最优决策。
给定石头的数量,判断你是否会赢得比赛。
举例:有四个石头,那么你永远不会赢得游戏。不管拿几个,最后一个石头一定会被你的朋友拿走。
思路解析
游戏开始时有一堆石子或其他物品,数量为n个。
两名玩家轮流从这一堆物品中取石子,每次取石子的数量最少为1个,最多为m个。
游戏的目标是成为最后一个取走石子的玩家,也就是说,谁在无法继续取石子(即石子已经被全部取完)的时候轮到自己,谁就输了。
巴什博弈的胜负关键在于初始石子数量n相对于每次最大可取数m的关系。如果(m+1)能整除n,则先手必败;反之,如果(m+1)不能整除n,则先手必胜
代码示例
def can_win_bash(self, n: int) -> bool:
# Write your code here
if n%4 == 0:
return False
else:
return True
本文来自博客园,作者:荒坂株式会社,博客内容均属学习笔记,只做交流之用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】