首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Josephus置换的讲师输出不能复制

Josephus置换的讲师输出不能复制
EN

Stack Overflow用户
提问于 2013-02-22 10:27:17
回答 1查看 235关注 0票数 0

我在一门数据结构课上,无法复制讲师给出的示例数据。该问题是具有用户提供的成员数量、步长间隔和起始位置的经典Josephus问题。

具体地说,我被告知99个人,从23开始,倒数5,应该留下84作为最后一个站着的人。

我得出的是: 65。我再次运行,认为输入可能是99个人,从5开始,间隔为23。结果: 42。

我的赋值解决方案涉及一个循环链表,但是这段c代码在所有情况下都会产生相同的输出:

代码语言:javascript
复制
#include <stdio.h>

int josephus(int n, long k)
{
  if (n == 1)
    return 1;
  else
  /* The position returned by josephus(n - 1, k) is adjusted because the
   *        recursive call josephus(n - 1, k) considers the original position 
   *               k%n + 1 as position 1 */
 return (josephus(n - 1, k) + k-1) % n + 1;
}

int main()
{
int n = 99;
int k = 23;
printf("The chosen place is %d\n", josephus(n, k) + 5);
return 0;
}

再次感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-23 00:33:37

LaFore认为倒计时是在超越。也就是说,从1开始,数到2将首先杀死4人。这篇文章中确实有一个例子。这是不直观的,LaFore似乎是唯一这样计算的作者。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15015853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档