题解 | 约瑟夫环

约瑟夫环

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

public class Program {
    public static void Main() {
        string[] line= System.Console.ReadLine().Split(" ");
        int n = int.Parse(line[0]);
        int k = int.Parse(line[1]);
        int m = int.Parse(line[2]);

 
        try{
            int[] duilie = new int[n];
            for(int i=0;i<n;i++){
                duilie[i]=1;
            }
            int num =0;
            int people= duilie.Length;
            //报数
            for(int y=k;y<duilie.Length;y++){
                if(people==1){
                    for(int res=0;res<duilie.Length;res++){
                        if(duilie[res]==1){
                             System.Console.WriteLine(res);
                             break;
                        }
                    }
                    break;
                }
                if(duilie[y]==1){
                    //可以报数
                    num+=1;//报数
                    if(num==m){
                        //出局 计数重置
                        duilie[y]=0;
                        num=0;
                        people-=1;
                        if(y==(duilie.Length-1)) y=-1;
                        continue;
                    }else{
                        //继续 
                        if(y==(duilie.Length-1)) y=-1;
                        continue;
                    }
                }else if(y==(duilie.Length-1)){
                    y=-1;
                }
            }
        }catch(System.Exception ex){
            System.Console.WriteLine(ex.Message);
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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