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

有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<Person> persons;
static void Main(string[] args)
{
InitPersons();
System.Console.WriteLine("最后一个人为:"+GetPerson(persons.First).Name);
System.Console.Read();

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

private static Person GetPerson(LinkedListNode<Person> 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; }
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值