C语言编写约瑟夫问题
时间: 2024-10-30 18:06:52 浏览: 51
约瑟夫环(Josephus Problem),也被称为“杀鸡取蛋”游戏,是一个经典的算法问题。在C语言中,我们可以使用循环结构来解决这个问题。基本规则是:有n个人围成一圈,从第一个人开始按顺序报数,每次跳过k个人(k大于1),直到剩下最后一个人。以下是简单的C语言代码示例:
```c
#include <stdio.h>
void josephus(int n, int k) {
if (n <= 1 || k <= 0) {
printf("无效输入,n大于1且k大于1。\n");
return;
}
int current = 0; // 当前位置的人
for (int i = 1; i < n; ++i) {
current = (current + k - 1) % n; // 报数并更新位置
if (current == 0) {
break; // 如果当前位置是0,说明需要杀掉
}
printf("%d ", current + 1); // 输出存活者编号
}
}
int main() {
int n, k;
printf("请输入人数n和跳过的人数k:");
scanf("%d %d", &n, &k);
josephus(n, k);
printf("\n");
return 0;
}
```
在这个程序中,用户会被提示输入人数n和跳过的人数k,然后程序会模拟约瑟夫环的过程,打印出存活到最后的人。
阅读全文