五、完善程序-1

(Josephus 问题) 有 n 个人围成一个圈,依次标号 0 至n−1。从 0 号开始,依次 0,1,0,1,… 交替报数,报到 1 的人会离开,直至圈中只剩下一个人。求最后剩下人的编号。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
const int MAXN = 1000000;
int F[MAXN];

int main() {
    int n;
    scanf("%d", &n);
    int i =0, p = 0, c = 0;
    while () {
        if (F[i] == 0) {
            if () {
                F[i] = 1;
                ;
            }
            ;
        }
       ;
    }
    int ans = -1;
    for (i = 0; i < n; i++)
        if (F[i] == 0)
        ans = i;
    printf("%d", ans);
    return 0;
}
Scroll to Top