单位笔试题,自己试做了一下

有100个人,分别编号(1到100的序号),然后依次报号,a、b、c,数到c的排除在该队列外,循环报号,最后只省一人,请问该人的序号是多少?(可以用任何语言)



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Example
{
class Program
{
static LinkedList persons;
static void Main(string[] args)
{
InitPersons();
System.Console.WriteLine("最后一个人为:"+GetPerson(persons.First).Name);
System.Console.Read();

}
private static void InitPersons()
{
persons = new LinkedList();
for (int i = 0; i < 100; i++)
{
persons.AddLast(new Person() {Name="name"+(i+1)});
}
}

private static Person GetPerson(LinkedListNode A)
{
var B = A.Next == null ? persons.First : A.Next;
var C = B.Next == null ? persons.First : B.Next;
var AN = C.Next == null ? persons.First : C.Next;
persons.Remove(C);
if (persons.Count == 1) return persons.First.Value;
return GetPerson(AN);
}

}
public class Person
{
public String Name { get; set; }
}
}


你可能感兴趣的:(.net技术)