约瑟夫环15 个人围成环数三退出用c语言
下面是使用C语言编写的约瑟夫环问题的解法:
#include <stdio.h>
int josephus(int n, int m) {
int i, s = 0; // s表示最后剩下的人的编号
for (i = 2; i <= n; i++) {
s = (s + m) % i; // 每次计算剩余人数时,相当于将上一轮的编号s加上m,并对i取模
}
return s + 1; // 返回最后剩下的人的编号(注意:题目中是从1开始编号的)
}
int main() {
int n = 15; // 总共15个人
int m = 3; // 数到3退出
int lastPerson = josephus(n, m);
printf("最后剩下的人的编号是:%d\n", lastPerson);
return 0;
}
在上面的代码中,josephus函数用来计算最后剩下的人的编号。它使用了一个循环,每次循环计算剩余人数时,相当于将上一轮的编号s加上m,并对i取模。最后返回s + 1,表示最后剩下的人的编号。
在main函数中,我们定义了总共15个人和数到3退出的情况。然后调用josephus函数计算最后剩下的人的编号,并输出结果
原文地址: http://www.cveoy.top/t/topic/h8vI 著作权归作者所有。请勿转载和采集!