返回信息流QQ群内讨论整理:
[quote]
Neverwinter 16:11:54
这道题是不是有问题?
return nextstart +1;
这个有可能得到答案吗?
阿天|乾为天 16:13:03
不知道。
阿天|乾为天 16:13:23
我个人的看法是while是用来排除一个人的。
那么if那里应该是用来递归的
Neverwinter 16:14:34
递归的话,没有考虑过
这么简单的东西也用递归,出题的人烦不烦啊
阿天|乾为天 16:14:52
呵呵。。。 改别人代码还不如自己写
Neverwinter 16:16:44
觉得while里面不太可能存在递归的语句
阿天|乾为天 16:17:08
不知道。。我脑细胞消耗太多了今天,不想深思
Neverwinter 16:17:43
一次for循环正常退出后,ring数组只剩下一个1了
Neverwinter 16:18:28
ring数组也在xxx函数里定义的,不像递归的作法。
Neverwinter 16:24:12
这道题目跟我从网上搜到的有点不一样
Neverwinter 16:24:34
网上搜到的是:返回最后一个出局的人
阿天|乾为天 16:25:44
每次数到N的人退出,求最后剩下的一个人的编号
阿天|乾为天 16:25:58
最后剩下一个人再数个N次,不就是最后一个出局的咯
Neverwinter 16:43:49
记得以前看的数数,数到n出圈的题目都有定义一个终止条件。就是数到只剩下一个人时结束。
Neverwinter 16:43:59
这道题。。。。。。不懂
Neverwinter 16:48:43
不考虑存在递归。
题目的for循环14次,每次设置一个0,代表对应的人出圈,最后的nextstart就是最后一个出圈人的位置。return nextstart+1就是将这个人的号码return 回去(假设号码是从1开始的)。
Neverwinter 16:50:06
所以题目觉得应该是 返回最后一个出局的人。
阿天|乾为天 16:50:29
都说了。。最后一个出局的和最后一个剩下的差不多啦
阿天|乾为天 16:50:42
因为他是一个圈。。。
循环队列
KaperX|潜水员 16:50:50
我做出来了,计算过程跟我手算的一样,但是觉得for i循环少了一次,这个循环结束后还剩两个人
Neverwinter 16:51:15
问题是循环的终止是只出列14个人
Neverwinter 16:51:31
不是出列15个
Neverwinter 16:53:36
只出列14人,然后将第14个出列的(就是最后一个)号码返回,就符合“返回最后一个出局的人”的要求了
Neverwinter 16:54:02
也符合循环的次数
KaperX|潜水员 16:54:05
我也是这样想的
Neverwinter 16:54:27
这样的话,题目就很简单了
Neverwinter 16:54:48
while循环只是将0跳过去
[/quote]
这是一条镜像帖。来源:北邮人论坛 / soft-design / #2100同步于 2005/12/2
SoftDesign机器人发帖
Re: 老题,答案不会,大家来研究研究
Neverwinter
2005/12/2镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
answer?
not sure. may not efficiency.
int T(int N)
{
int ring[TOTAL] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int nextstart = 0,counter=0;
for (int i = 1; i<TOTAL; i++)
{
counter = 0;
while(counter < N)
{
if ( ++counter && nextstart == TOTAL - 1 )
nextstart = 0;
else
nextstart++;
}
ring[nextstart] = 0;
}
return nextstart +1;
}
may be not correct
【 在 alexxin (论坛是用来做什么的?) 的大作中提到: 】
: answer?
: not sure. may not efficiency.
: int T(int N)
: ...................
try this?
if (ring[nextstart] == 0) nextstart = (nextstart + 1) % TOTAL;
else ++counter, nextstart = (nextstart + 1) % TOTAL;
【 在 Neverwinter 的大作中提到: 】
: try this?
: if (ring[nextstart] == 0) nextstart = (nextstart + 1) % TOTAL;
: else ++counter, nextstart = (nextstart + 1) % TOTAL;
any answer?
this is not correct.