連續座算法

連續座算法

聲明算法

        /// <summary>
        /// 判斷是否存在指定座數量的連續座(算法)
        /// </summary>
        /// <param name="num">座位數量</param>
        /// <param name="dataSource">數據源</param>
        /// <param name="seatNos">符合條件的連續座位號</param>
        /// <returns></returns>
        private static bool IsExistContinuity(int num,int[] dataSource,ref int[] seatNos)
        {
            //初始連續座位號標識
            var initSeatNoFlog = 0;

            //初始連續座位號下標
            var initSeatNoSubscript = 0;

            //記錄連續次數
            var recordConsecutiveTimes = 0;

            for (int i = 0; i < dataSource.Length; i++)
            {
                var temp = dataSource[i] - i;

                if (temp == initSeatNoFlog)
                {
                    recordConsecutiveTimes++;
                }
                else
                {
                    initSeatNoFlog = temp;
                    initSeatNoSubscript = i;
                    recordConsecutiveTimes = 1;
                }

                if (recordConsecutiveTimes != num) continue;

                Array.Copy(dataSource,initSeatNoSubscript,seatNos,0,num);

                return true;


            }
            return false;
        }

調用

        static void Main(string[] args)
        {
            //座位數據源
            var dataSource = new [] {1,3,4,5,7,9,10,17};

            var seatNos = new int[3];

            var result = IsExistContinuity(3, dataSource,ref seatNos);
            Console.WriteLine(result);

            Console.ReadKey();
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章