0
点赞
收藏
分享

微信扫一扫

有500个人围城一个圈,依次报数,每数到3的倍数的人离开圈,数完一圈后继续从1开始数,直到圈中剩下最后一个人,求剩下的人原来在圈中的位置(约瑟夫环问题)

海牙秋天 2022-05-03 阅读 58
java
public static void main(String[] args) {
    boolean[] people = new boolean[500];
    for (int i = 0; i < people.length; i++) {
        people[i] = true;
    }
    int xiaBiao = 0;
    int jiShu = 0;
    int renShu = 500;
    while (renShu > 1) {
        if (people[xiaBiao]) {
            jiShu++;
        }
        if (jiShu == 3) {
            people[xiaBiao] = false;
            jiShu = 0;
            renShu--;
        }
        if (xiaBiao == people.length - 1) {
            xiaBiao = 0;
        } else xiaBiao++;
    }
    for (int i = 0; i < people.length; i++) {
        if (people[i])
            System.out.println("最后一人在圈中的位置为:" + (i + 1));
    }
}
举报

相关推荐

0 条评论