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;
                }
            }
        }
  • 相关阅读:
    linux tcpdump补充
    一个由有符号下标引起的bug
    leetcode-First Missing Positive
    Flutter移动电商实战 --(26)列表页_使用Provide控制子类-2
    Flutter移动电商实战 --(25)列表页_使用Provide控制子类-1
    Flutter移动电商实战 --(24)Provide状态管理基础
    Flutter移动电商实战 --(23)分类页_左侧类别导航制作
    Flutter移动电商实战 --(22)JSON解析和复杂数据模型转换技巧
    [翻译] NSDate-TimeAgo
    Replace-iOS
  • 原文地址:https://www.cnblogs.com/end/p/2381519.html
Copyright © 2011-2022 走看看