有n个人围坐在一个圆桌周围,把这n个人依次编号为1,.....,n.从编号是s的人开始报数,直到第d个人离席,然后从离席的下一位开始重新开始报数,
数到d的人离席......如此反复,直到最后剩一个人在座位上为止。比如当n=3,s=1,d=2的时候,离席的顺序依次是2,4,1,5,最后留在座位上的是3号
`` internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
JosephRing(5, 1, 2);
}
static void Show(ArrayList list){foreach (var item in list){Console.Write(item+" ");}Console.WriteLine();}static void JosephRing(int n,int s,int d){ArrayList list = new ArrayList();int i, j, k;for ( i = 1; i <=n; i++){list.Add(i);}Show(list);i = s - 2;k = n;while (k > 1){j = 0;while (j<d){j++;i = (i + 1) % k;}Console.WriteLine("out: " + list[i]);list.RemoveAt(i);k--;i=(i-1) % k;Show(list);}Console.WriteLine(list[0]);}
}``