日期:2014-06-10 浏览次数:20428 次
早上刷微博的时候看到用程序输入全排列,一想发现自己没写过,不会,查资料吧。
百度百科上的解释,总结一下就是将当前的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); } } } }