100題 第五十三題 字串的全排列

2022-10-10 13:18:15 字數 1019 閱讀 1662

遞迴求解思路:

1)  每個元素依次放到首位,然後對其餘元素遞迴

2)  當當前元素到達末尾的時候,輸出該序列

關鍵是:

每個元素交換完,之後要交換過來。每個元素依次放到首位,

for(int i=currentindex;i<=n;++i)

#include#include#define swap(x,y,t)((t)=(x),(x)=(y),(y)=(t))

int score=0;

void perm(int *list,int i,int n)

printf("\n");

score++;

}else

}}int main()

; perm(list,0,2);

printf("thetotal number is %d\n",score);

system("pause");

}

string 版本

#include using namespace std;

void permutation(string pstr, int k, int n)

{ if(k==n)

cout<

二,擴充套件

如果不是求字元的所有排列,而是求字元的所有組合,應該怎麼辦呢?(

p72)

思路:這裡不採用交換方式,而是採用刪減的方式。採用不同的剔除順序,並用

prex

保留刪減值,這樣將得到所有符合條件的序列

#include using namespacestd;

voidselect(string str, string prex)

{ string temp=str;

cout<

擴充套件二:

當輸入的字串中含有相同的字串時,相同的字元交換位置是不同的排列,但是同乙個組合。

舉個例子,如果輸入

aaa,那麼它的排列是6個

aaa,但對應的組合只有乙個。

100題 第五十三題 字串的全排列

遞迴求解思路 1 每個元素依次放到首位,然後對其餘元素遞迴 2 當當前元素到達末尾的時候,輸出該序列 關鍵是 每個元素交換完,之後要交換過來。每個元素依次放到首位,for inti currentindex i n i include include define swap x,y,t t x x ...

劍指Offer第五十三題 表示數值的字串

請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。思路 這裡表示數字的字元有 0 9,e,e,規則 ps 這裡我測試過 128.可以輸出,1,1...

演算法題 字串的全排列

問題 編寫乙個函式,用它把字串中所有的字元的各種排列形式全部顯示出來,即用給定字元做全排列。如 比如給定字串 hat 函式輸出全排列 tha,aht,tah,ath,hta,hat.演算法如下 void dopermute char in,char out,int used,int length,i...