方法一:
#include
#include
char b[100];
long aa=0;
int bb;
char *sub(char *q,int i)
else
}else}}
void main()
不輸出字串b的情況下:
輸入:abcdefgh
輸出:40320
輸入:abcdefghi
輸出:362880
方法二空間複雜度比方法一小
但時間複雜度比方法一大
總結:程式不是隨便設計,真的要講究方法。大數目是檢驗程式好壞的好方法
看來還要再優化上面的程式!!
方法三(網上找的)
#include
#include
/*最多50無素*/
#define max 50
char dst[max] = ;
long n=0;
/*[函式說明]
遞迴呼叫,輸出array的全排列.
[引數]
char *parray : 需要排列的array
int iindex : 當前排列編號
int imax : array元素個數.
[返回值]
無.[備註]
imax <= 陣列大小.
0 <= iindex && iindex <= imax
*/void combination(char *parray, int iindex, int imax)else if(parray[i] != '*')else
//回溯
parray[i] = ctemp;}}
}void main( )
求字串全排列
q 輸入乙個字串,列印出該字串中字元的所有排列 a 以abc為例,我們首先將a固定在第一位,然後排列bc,當bc排列完成後,我們會將b固定在第一位,也就是交換a和b的位置,變成bac,然後排列ac,當ac排列完成後,我們需要將c固定在第一位,先將a和b的位置復原,在交換a和c的位置即可。因此,用遞迴...
求字串的全排列
題目 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則輸出由字元a b c所能排列出來的所有字串abc acb bac bca cab和cba。利用stl中的next permutation方法可以很快解出來 next permutation方法產生引數序列的下乙個字典序列,返回值...
字串的排列 全排列
輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。使用itertools中的permutations,可以實現全排列 ...