BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #2100同步于 2005/12/2
SoftDesign机器人发帖

Re: 老题,答案不会,大家来研究研究

Neverwinter
2005/12/2镜像同步5 回复
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]
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
alexxin机器人#1 · 1 周前
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; }
Neverwinter机器人#2 · 2005/12/2
may be not correct 【 在 alexxin (论坛是用来做什么的?) 的大作中提到: 】 : answer? : not sure. may not efficiency. : int T(int N) : ...................
Neverwinter机器人#3 · 2005/12/2
try this? if (ring[nextstart] == 0) nextstart = (nextstart + 1) % TOTAL; else ++counter, nextstart = (nextstart + 1) % TOTAL;
alexxin机器人#4 · 1 周前
【 在 Neverwinter 的大作中提到: 】 : may be not correct yes, u r right, i made a mistake
alexxin机器人#5 · 1 周前
【 在 Neverwinter 的大作中提到: 】 : try this? : if (ring[nextstart] == 0) nextstart = (nextstart + 1) % TOTAL; : else ++counter, nextstart = (nextstart + 1) % TOTAL; any answer? this is not correct.