2010年(122)
分类: C/C++
2010-03-26 19:57:51
有n个字符a[n],输出这n个字符的所有排列。比如,有字符 A B C 则其所有排列为:
ABC
ACB
BAC
BCA
CBA
CAB
Foo(char * str,int s,int e)l输入str中从s到e字符的所有全排列,求所有字符的全排列即为Foo(a,0,n);
Foo(a,0,n)={以a[0]为首元素的全排列}+{以a[1]为首元素的全排列}+……+{以a[n-1]为首元素的全排列};
其中{以a[0]为首元素的全排列}便是Foo(a,1,n),规模变小了。同理,以a[i]为首元素的全排列是将a[i]与a[0]交换后的Foo(a,1,n),用递归求解便得到如下程序:
|