3157. 取球博弈
题目链接
3157. 取球博弈
两个人玩取球的游戏。
一共有 个球,每人轮流取球,每次可取集合 中的任何一个数目。
如果无法继续取球,则游戏结束。
此时,持有奇数个球的一方获胜。
如果两人都是奇数,则为平局。
假设双方都采用最聪明的取法,第一个取球的人一定能赢吗?
试编程解决这个问题。
输入格式
第一行 个正整数 ,空格分开,表示每次可取的数目。
第二行 个正整数 ,空格分开,表示 局的初始球数。
输出格式
一行 个字符,空格分开。分别表示每局先取球的人能否获胜。能获胜则输出 +
,次之,如有办法逼平对手,输出 0
,无论如何都会输,则输出 -
。
数据范围
输入样例1:
输出样例1:
输入样例2:
输出样例2:
输入样例3:
输出样例3:
解题思路
博弈论,记忆化搜索,dp
针对先手来说,
- 状态表示: 表示当前轮到先手()/后手()操作,且此时先手有 个球,后手有 个球的最佳结果,如果先手能赢,则结果为 ,否则如果能平,则结果为 ,否则为
然后记忆化搜索,轮到先手时,如果存在一个后继状态使得先手能赢,则当前状态能赢,直接返回,否则如果能平,则最后如果没有赢的状态则尽量平;轮到后手,如果存在一种状态使得先手输,则先手输,直接返回,否则如果能平,则最后如果先手没有输的状态则尽量平,如果连平的状态都没有,则先手必胜
- 时间复杂度:
代码
__EOF__

本文作者:acwing_zyy
本文链接:https://www.cnblogs.com/zyyun/p/16085806.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/zyyun/p/16085806.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!