为什么用currentIndex与monkey.count来比较?monkey.RemoveAt()与monkey.Remove()有什么区别呢?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace monkey
{
class Program
{
// //相传有一群猴子要选出大王,它们采用的方式为:所有猴子站成
//一个圈,然后从1开始报数,每当数到".
////"N的那一只猴子就出列,然后继续从下一个猴子开始又从1开始数,数
//到N的猴子继续出列,一直到最后".
////"剩的猴子就是大王了。 假如现在有M只猴子, 报数数为N, 请问第几只猴
//子是大王?列出选大王的过程。
static void Main(string[] args)
{
int m = 10;
int n = 3;
List<string> monkey = new List<string>();
for (int i = 1; i <= m; i++)
{
monkey.Add("m" + i);
//monkey.Remove(monkey[2]);
//Console.WriteLine(monkey[i]);
}
//Console.Read();
int currentIndex = 0;
while (true)
{
for (int i = 1; i <= n; i++)
{
if (i == n)
{
monkey.RemoveAt(currentIndex);
if (monkey.Count == 1)
{
Console.WriteLine(monkey[currentIndex]);
return;
}
}
currentIndex++;
if (currentIndex >= monkey.Count)
{
currentIndex = 0;
}
}
}
|