约瑟夫斯问题c语言求出列顺序
时间: 2023-05-29 14:05:45 浏览: 136
约瑟夫环问题,查找出出队列的顺序
以下是用C语言实现的约瑟夫斯问题,输出了最后剩下的人的编号。
```c
#include <stdio.h>
int main()
{
int n, m, i, s = 0;
printf("请输入总人数n和报数m:");
scanf("%d%d", &n, &m);
int a[n];
for (i = 0; i < n; i++) {
a[i] = i + 1; // 初始化人的编号
}
i = 0;
while (n > 1) {
s = (s + m - 1) % n; // 计算出要删除的人的下标
printf("%d ", a[s]); // 输出要删除的人的编号
for (i = s; i < n; i++) {
a[i] = a[i + 1]; // 删除要删除的人
}
n--; // 人数减1
}
printf("\n剩下的人的编号是:%d\n", a[0]); // 输出最后剩下的人的编号
return 0;
}
```
运行结果:
```
请输入总人数n和报数m:10 3
3 6 9 2 7 1 8 5 10
剩下的人的编号是:4
```
阅读全文