用C语言编写一个能解决约瑟夫环问题的小程序,求出最后一个出列的人的原始编号。
时间: 2024-04-17 11:26:56 浏览: 88
约瑟夫环问题-C语言版本
5星 · 资源好评率100%
当然可以!以下是一个用C语言编写的解决约瑟夫环问题的小程序:
```c
#include <stdio.h>
int josephus(int n, int k) {
if (n == 1) {
return 1;
} else {
return (josephus(n - 1, k) + k-1) % n + 1;
}
}
int main() {
int n, k;
printf("请输入总人数n:");
scanf("%d", &n);
printf("请输入报数k:");
scanf("%d", &k);
int lastPerson = josephus(n, k);
printf("最后一个出列的人的原始编号是:%d\n", lastPerson);
return 0;
}
```
这个程序中,`josephus` 函数用递归的方式解决约瑟夫环问题,`n` 表示总人数,`k` 表示报数。`main` 函数用于输入总人数和报数,然后调用 `josephus` 函数求解最后一个出列的人的原始编号,并进行输出。
希望这个程序能够帮助到你!如果有任何问题,请随时提问。
阅读全文