下面是使用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函数计算最后剩下的人的编号,并输出结果

约瑟夫环15 个人围成环数三退出用c语言

原文地址: http://www.cveoy.top/t/topic/h8vI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录