C#: 约瑟夫环 - 解法思路

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依规律重复下去,直到圆桌周围的人全部出列,约瑟夫环结束。

 

 int pepleCount = 30;   //一共多少人
            int index = 9;   //第几个出列
            Queue<int> vs = new Queue<int>();
            for (int i = 1; i <= pepleCount; i++)
            {
                vs.Enqueue(i);
            }
            int flag = 1;
            while (vs.Count>15)
            {
                if (flag==index)    //报道对应数字的人出列
                {
                    Console.WriteLine("扔下去:"+vs.Dequeue());
                    flag = 1;
                }
                else
                {
                    vs.Enqueue(vs.Dequeue());
                    flag++;
                }
            }
            foreach (var item in vs)
            {
                Console.WriteLine("剩下的:"+item);
            }

C#: 约瑟夫环 - 解法思路

 

C#: 约瑟夫环 - 解法思路

上一篇:windows上安装Django


下一篇:UNIX/LINUX 平台可执行文件格式分析