社区
C语言
帖子详情
找个算法
rjlly
2005-01-10 09:38:38
如果有n个棋子,甲乙两方轮流取棋子,每方至少取一个棋子,最多取m个棋子谁最后取剩下的一个棋子,谁就输,如果甲方先取,给出甲方赢的算法.
我正在学C语言,请给出C的描述或程序.谢谢!
...全文
157
10
打赏
收藏
找个算法
如果有n个棋子,甲乙两方轮流取棋子,每方至少取一个棋子,最多取m个棋子谁最后取剩下的一个棋子,谁就输,如果甲方先取,给出甲方赢的算法. 我正在学C语言,请给出C的描述或程序.谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rjlly
2005-01-12
打赏
举报
回复
难道没有人能给个思路吗?
lzxjxsy
2005-01-12
打赏
举报
回复
哦,不好意思,看反了,还以为拿到最后一个的算赢了。
不过思路一样:
1 . 甲第一次拿(n-1)%(m+1) 个,也就是n-1除以m+1的余数。
2. 甲以后每一次拿走的都是m+1-i, i为乙拿走的数目。因为甲第一次拿后,剩下总数-1必然是m+1的倍数。不管乙拿几个,m+1-i总是在1到m之间。所以,甲能让剩下的总数-1是m+1的倍数。所以,甲总能拿到倒数第二个子。
3 . 限制条件,就是(n-1) %(m+1)不能为0,甲才能必胜,就是说n-1不能使m+1整数倍。
lzxjxsy
2005-01-12
打赏
举报
回复
对上述思路的还有一点补充,
就是n 不能是 m+1的倍数。
lzxjxsy
2005-01-12
打赏
举报
回复
思路就是
1. 甲第一次拿n%(m+1) 个,也就是n除以m+1的余数。
2. 甲以后每一次拿走的都是m+1-i, i为乙拿走的数目。因为甲第一次拿后,剩下的必然是m+1的倍数。
不管乙拿几个,m+1-i总是在1到m之间。所以,甲能让剩下的总是m+1的倍数。
liem
2005-01-11
打赏
举报
回复
取走后留下的个数N满足:N mod m=1。因此先取的人必胜。
jdcb2001
2005-01-11
打赏
举报
回复
只要让对方拿第Total%(2*m)颗棋就胜券在握了:)
至于具体走法见机行事,只有先走就能赢.
如果还要用穷举把所有拿法都算出来,实在没意义了
jdcb2001
2005-01-11
打赏
举报
回复
如果n>>m,谁拿了倒数第(2m+1)颗棋谁就一定输;
同理,谁拿了倒数第(4m+1)颗谁就一定拿"倒数第(2m+1)颗棋"
……
chenyu17094256
2005-01-10
打赏
举报
回复
楼上思想N棒!
但是由于说得简单,难免不够全面。如果留下了m+1个子,那怎么办?
wasoxi
2005-01-10
打赏
举报
回复
在甲取的时候务必做到给乙留下的是>=m or = 1才能有取胜的机会
最后当然留下了当然是1了
那就对m ,n的大小关系判断了
取出i n = n - i;
应该就是这样了吧 具体的就自己去练练了
Roaming_Sheep
2005-01-10
打赏
举报
回复
我正在学C语言,请给出C的描述或程序.谢谢!
___________________________________________
既然正在学,就自己写。
Dijkstra
算法
图文详解
Dijkstra
算法
算是贪心思想实现的,首先把起点到所有点的距离存下来
找个
最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,...
算法
1.
算法
定义 ...如果一个
算法
有缺陷,或不适合于某个问题,执行这个
算法
将不会解决这个问题。不同的
算法
可能用不同的时间、空间或效率来完成同样的任务。一个
算法
的优劣可以用空间复杂度与时间复杂度来衡量。
找圆
算法
((HoughCircles)总结与优化
Opencv内部提供了一个基于Hough变换理论的找圆
算法
,HoughCircle与一般的拟合圆
算法
比起来,各有优势:优势:HoughCircle对噪声点不怎么敏感,并且可以在同一个图中找出多个圆;反观拟合圆
算法
,单纯的拟合结果容易...
在
算法
研究过程中如何进行
算法
创新
创新一直是一个令人纠结的话题,研究生毕业设计多数需要
算法
的创新,而博士生毕业更需要大量的创新才行。这里,我们就团队这几年来的工作经验,谈谈如何进行合理的
算法
创新。 一、创新角度 通常,我们使用一个...
(
算法
)从10000个数中找出最大的10个
从10000个整数中找出最大的10个,最好的
算法
是什么?
算法
一:冒泡排序法 千里之行,始于足下。我们先不说最好,甚至不说好。我们只问,如何“从10000个整数中找出最大的10个”?我最先想到的是用冒泡排序的办法...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章