约瑟夫问题

【问题描述】n个人围成一圈,顺序编号。从第一个人开始从1到3报数,凡报到3的人退出圈子,编程求解最后留下的人的初始编号。【输入】输入由键盘输入,只有一行这一行有一个正整数... 【问题描述】

n个人围成一圈,顺序编号。从第一个人开始从1到3报数,凡报到3的人退出圈子,编程求解最后留下的人的初始编号。

【输入】

输入由键盘输入,只有一行

这一行有一个正整数n,代表n个人围成一圈

【输出】

输出共一行,为最后留下来的那个人的编号

【样例输入】

5

【样例输出】

4

【数据范围】

保证100%数据 2<=n<=200
展开
 我来答
风若远去何人留
2014-04-09 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

简单一点 直接数组模拟

如下

#include <stdio.h>
int main()
{
int a[201] = {0};
int n;
int left;
int i = 1, k=1;

scanf("%d", &n);
left = n;
while(left != 1)
{
while(a[k])
{
k++;
if(k > n) k = 1;
}
if(i == 3) 
{
i = 0;
a[k] = 1;
left --;
printf("r %d\n", k);
}
i++;
k++;
if(k>n) k = 1;
}
for(i = 1; i <= n; i ++)
if(!a[i]) break;
printf("%d\n", i);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式