全排列 (C語言實現)

2021-07-05 04:52:25 字數 659 閱讀 4650

**:題目:輸入乙個字串,列印出該字串中字元的所有排列。

例如輸入字串abc,則輸出由字元a、b、c 所能排列出來的所有字串

abc、acb、bac、bca、cab 和cba。

一、遞迴實現

從集合中依次選出每乙個元素,作為排列的第乙個元素,然後對剩餘的元素進行全排列,如此遞迴處理,從而得到所有元素的全排列。以對字串abc進行全排列為例,我們可以這麼做:以abc為例

固定a,求後面bc的排列:abc,acb,求好後,a和b交換,得到bac

固定b,求後面ac的排列:bac,bca,求好後,c放到第一位置,得到cba

固定c,求後面ba的排列:cba,cab。**可如下編寫所示

#includeusing namespace std;

void permutation(char* pstr, char* pbegin);

void permutation(char* pstr)

void permutation(char* pstr, char* pbegin)

else

} } int main()

; permutation(str);

getchar();

return 0;

}

C語言實現全排列演算法

題目 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則輸出由字元a b c 所能排列出來的所有字串 abc acb bac bca cab 和cba。includeusing namespace std void permutation char pstr,char pbegin ...

C語言實現排列組合(全排列)

題目描述 排列與組合是常用的數學方法。先給乙個正整數 1 n 10 例如n 3,所有組合,並且按字典序輸出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 輸入 輸入乙個整數n 1 n 10 輸出 輸出所有全排列 每個全排列一行,相鄰兩個數用空格隔開 最後乙個數後面沒有空格 ...

全排列(Java語言實現perm)

全排列 perm演算法 是一種典型的列舉方法。在解決簡單的排列問題 要排列的元素數量較少 時,如果無法利用貪心演算法或者dp求解或者是一時想不出有效的演算法,通過全排列可以解決較多型別的問題,儘管在時間和空間上無法保證總是滿足要求。舉乙個栗子 乙個陣列長度為三 那麼他的全排列有3!6種。即 1 2 ...