本文主要是介绍约瑟夫环 (罪犯问题 c#),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/// <summary>/// 列表实现约瑟夫环问题/// 古代某法官要判决n个犯人死刑,有条荒唐的法律:/// 让犯人站成一个圈,从第s个人开始数起,每数到第d个犯人,就拉出来处决,/// 再从下一个开始数d个,直到剩下最后一个人/// 调用 JosePhus(5, 0, 2);/// </summary>/// <param name="number">总人数</param>/// <param name="start">开始数数的下标(从0开始)</param>/// <param name="distance">计数</param>public static void JosePhus(int number, int start, int distance){List<string> list = new List<string>(number);for(int i = 0; i < number; i++){list.Add((char)('A' + i) + "");}Console.WriteLine($"JosePhus({number},{start},{distance}),{string.Join(',',list)}");int index = start;string deleteItem = null;while(list.Count > 1){index = (index + distance - 1) % list.Count;deleteItem = list[index];list.RemoveAt(index);Console.WriteLine($"删除{deleteItem}, ({string.Join(',', list)})");}Console.WriteLine($"剩下{string.Join(',', list)}");}
结果
这篇关于约瑟夫环 (罪犯问题 c#)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!