题解 | 约瑟夫环

约瑟夫环

https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        int m = in.nextInt();

        int[] s=new int[n];

        int current = k;  //当前位置指针
        int eliminated = 0;  //淘汰人数
        int step = 0;  //当前步数

        while(eliminated < n-1){
            if(s[current]==0){ //还没被淘汰
                step++;
                if(step ==m){
                    s[current]=1;
                    step=0;
                    eliminated++;
                }
            }
            current=(current+1)%n;//移动到下一个人,这样能将当前指针控制在0-n-1循环
        }

        for(int i=0;i<n;i++){
            if(s[i]==0){
                System.out.println(i);
            }
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务