早上刷微博的時候看到用程序輸入全排列,一想發現自己沒寫過,不會,查資料吧。
百度百科上的解釋,總結一下就是將當前的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);
}
}
}
}