求一不同字串的全排列 不容易啊!終於編出來了。

2021-05-05 03:17:06 字數 894 閱讀 7055

方法一:

#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,可以實現全排列 ...