數據結構--編程題

編程題1:有N個人圍一圈依次報數,數到3的人出列,問當只剩一個人時他原來的位子在哪裏?

// 轉圈踢人遊戲(約瑟夫環問題)

            /* 1、構建數組 */
            string[] persons = new string[10];                  

            Random random = new Random();

            for (int i = 0; i < persons.Length; i++)
            {
                persons[i] = String.Format("Person:{0}", random.Next(100));
            }


            int j = 0;          /* 記錄成員報數值,用於踢人 */

            int count = 0;      /* 記錄被踢人員數,用於判斷踢人結束 */


            /* 2、開始轉圈踢人 */
            for (int i = 0; i < persons.Length; i = (i + 1) % persons.Length)   /* i = (i + 1) % persons.Length 保證可以轉圈,踢至最後一個人 */
            {
                 
                if (persons[i] != "")                   /* 不爲空,表示需要驗證是否需要被踢出 */
                {
                    j++;

                    if (j % 3 == 0)                     /* 表示報數爲3的成員,進行踢出*/
                    {
                        persons[i] = "";                /* 踢出成功 */

                        count++;                        /* 被踢人數加1 */
                        //j = 0;
                        

                        if (count == persons.Length)    /* 最後一個被踢的人 */
                        {
                            Console.WriteLine("The last people is " + i);

                            break;
                        }
                    }
                }
            }


發佈了120 篇原創文章 · 獲贊 9 · 訪問量 57萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章