zoukankan      html  css  js  c++  java
  • 【算法】n个人围成一圈报数,报到3的退出,下面接着从1开始报,问最后剩下的是谁?

    class Program
        {
            static void Main(string[] args)
            {
                List<int> array = new List<int>(600);
                for (int i = 1; i <= 600; i++)
                {
                    array.Add(i);
                }
                var circleList = new CircleArrayList<int>(array);
                int num = 0;
                while (true)
                {
                    if (circleList.Lengh == 1)
                    {
                        break;
                    }
                    num += 1;
                    if (num == 3)
                    {
                        circleList.Remove();
                        num = 0;
                    }
                    else
                    {
                        circleList.MoveNext();
                    }
                   
                }
                Console.WriteLine(circleList.Current);
                Console.ReadLine();
            }
        }

        public class CircleArrayList<T> : IEnumerator<T>
        {
            private List<T> interal;
            private int index = 0;

            public CircleArrayList(List<T> list)
            {
                this.interal = list;
            }

            public T Current
            {
                get { return interal[index]; }
            }

            public void Dispose()
            {
                return;
            }

            object System.Collections.IEnumerator.Current
            {
                get { return interal[index]; }
            }

            public bool MoveNext()
            {
                index += 1;
                if (index == interal.Count)
                    index = 0;
                return true;
            }

            public void Reset()
            {
                index = 0;
            }
            public void Remove()
            {
                interal.RemoveAt(index);
                if (index == interal.Count)
                    index = 0;
            }

            public int Lengh
            {
                get
                {
                    return interal.Count;
                }
            }
        }
  • 相关阅读:
    Codeforces Round #161 (Div. 2)
    Codeforces Round #160 (Div. 2)
    Codeforces Round #159 (Div. 2)
    Codeforces Round #157 (Div. 2)
    世界树的考验「NOIP多校联考 2019」
    最大异或和
    腿部挂件「NOIP多校联考 2019」
    玩具取名「HAOI2008」
    涂色「CQOI2007」
    唱、跳、rap 和篮球「TJOI2019」
  • 原文地址:https://www.cnblogs.com/end/p/2381519.html
Copyright © 2011-2022 走看看