C或C++的割绳子问题,,,

时间:2022-06-01 17:51:51
题目7(5):
甲乙两人之间进行的“割绳游戏”从甲开始,两人轮流先切割再丢弃一段绳子。设有N根长度都是整数的绳子,每根长度已知,每人每次丢弃绳子的长度也必须是整数,不得超过M,应该是下述三种情况之一:
(1) 丢弃整根绳子;
(2) 切割一根绳子为二段,丢弃其中一段;
(3) 切割一根绳子为三段,丢弃中间的那一段;能够取到最后一段绳子并丢弃者胜,也就是最先出现无绳子可取者负。这是一个开始就可以确定胜负的游戏,你的任务就是编写判断胜负的程序。对程序的输入是N,M,  及N根绳子的长度X1,X2,……, XN, 输出谁是胜者,即甲胜输出甲,乙胜输出乙。做为课程设计题目,还要求你说明取胜者的取胜操作策略。你的程序应该允许 1≤N≤100,1≤M、各Xi≤1000。
三个样例如下:
(1) 输入 1,2,9,则应输出甲胜,只有一根长9的绳子,每次丢弃不能超过2,甲可以割三段丢弃中间长1的一段,留长都为4的两段,然后乙在一根绳子上怎样做,甲只需对另一根绳子照办,必可以取到最后一段。
(2) 输入3,10,3,5,6,输出乙胜。(3) 输入3,2,3,5,6, 输出甲胜。(题目来源:2012年广东省ACM大赛试题)。
提示:如果不看丢弃绳子的第3种情况,本题就是经典的“取石子游戏”。用“取石子问题”在百度或其它网站上搜索,可以看到多种分析及解答。而第三种情况并没有改变问题的性质。

1 个解决方案

#1


等大神出现,

#1


等大神出现,