1. 程式人生 > 其它 >C#: 約瑟夫環 - 解法思路

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); }