程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 全排列輸出 遞歸算法

全排列輸出 遞歸算法

編輯:C#入門知識

早上刷微博的時候看到用程序輸入全排列,一想發現自己沒寫過,不會,查資料吧。
百度百科上的解釋,總結一下就是將當前的Index與後面的Index依次替換,直到結束!

        //將數組中指定的下標交換位置
        private static void 交換(char[] charlist, int left, int right)
        {
            var m = charlist[left];
            charlist[left] = charlist[right];
            charlist[right] = m;
        }

        private static void 遞歸(char[] charlist, int index, int length)
        {
    
            if (index == length - 1)    //當訪問到列表的最後時將當前的順序輸出
            {
                for (int i = 0; i < charlist.Length; i++)
                {
                    Console.Write(charlist[i]);
                }
                Console.WriteLine();
            }
            else
            {
                //訪問列表
                for (int i = index; i < length; i++)
                {
                    if (i != index)
                    {
                        交換(charlist, index, i);
                    }

                    遞歸(charlist, index + 1, length);

                    if (i != index)
                    {
                        交換(charlist, index, i);
                    }
                }
            }
        }    

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved