C 字串全排序

2022-02-24 23:14:07 字數 807 閱讀 9207

排列:從n個元素中任取m個元素,並按照一定的順序進行排列,稱為排列;

全排列:當n==m時,稱為全排列;

比如:集合的全排列為:

我們可以將這個排列問題畫成圖形表示,即排列列舉樹,比如下圖為的排列列舉樹,此樹和我們這裡介紹的演算法完全一致;

演算法思路:

(1)n個元素的全排列=(n-1個元素的全排列)+(另乙個元素作為字首);

(2)出口:如果只有乙個元素的全排列,則說明已經排完,則輸出陣列;

(3)不斷將每個元素放作第乙個元素,然後將這個元素作為字首,並將其餘元素繼續全排列,等到出口,出口出去後還需要還原陣列;

static void main(string args)

/// /// 全排序

///

///

///

///

static void perm(char a, int begin, int end)

console.writeline("");

}else}}

/// /// 交換陣列 索引x和y位置的值

///

///

///

///

static void swap(char a, int x, int y)

測試結果:

字串 全排序

給定乙個字串陣列,列印這個陣列所有的排序組合。利用遞迴,把每個字串放在開頭n,然後分別得到相應的組合個數m,最後sum s m。public class stringfullarray public static void arrange string str,int start,int lengt...

字串的排序(全排序)

劍指offer 中題38 輸入乙個字串,列印出該字串中字元的所有排列。例如,輸入字串abc,則列印出由字元a b c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。遞迴過程 1.從起始位置往後迴圈,起始位置的字元和後面字元對換 2.遞迴該過程 3.起始位置的字元和後面字元對換回...

經典題目 字串全排序

題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入 每個測試案例包括1行。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。輸出 對應每組資料,按字典序輸...