约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知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); }