天然灰

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

 

 

 

    static void Main(string[] args)
        {

            ///解题思路:
            ///1,N个猴子,报数,报道M个猴子出圈
            ///2,输出N个人的出圈次序
            ///3,用数组模拟N猴子,数组类型为布尔,代表这个人是否出圈,为true时这猴子出圈
            ///4,我们可以用循环模拟报数,报到M的人出圈。当N个人全部出圈之后循环结束
            ///5.报数的时候,需要判断,没出圈的人才能报数。
            int n;
            int m;
            Console.WriteLine("N代表圈中有多少人");

            n = int.Parse(Console.ReadLine());
             Console.WriteLine("M代表出圈的人");
            m = int.Parse(Console.ReadLine());
            int index = 0;
            int count = 0;
            int num = 0;
            bool[] monkey = new bool[n];

            while (num <= m)
            {
                if (monkey[index] == false)
                {
                    count++;
                    if (count == m)
                    { 
                        //下一个人从新报数
                        count=0;
                        //当前报M的人出圈
                        monkey[index] = true;
                        //出圈人数加1
                        num++;
                        Console.WriteLine("第{0}个人出圈了", index + 1);
                    }
                
                }
                //下一个人报数,index同时注意越界          
                index++;
                index %= n;
              
            }
            Console.ReadLine();
        }

 

posted on 2019-04-18 17:29  天然灰  阅读(142)  评论(0编辑  收藏  举报