全排列

兩種方法:
第一種方法:
遞歸:

  • 從集合中依次選出每一個(gè)元素芜茵,作為排列的第一個(gè)元素,然后對(duì)剩余的元素進(jìn)行全排列产镐,如此遞歸處理隘庄,
  • 從而得到所有元素的全排列。以對(duì)字符串a(chǎn)bc進(jìn)行全排列為例磷账,我們可以這么做:以abc為例:
  • 固定a峭沦,求后面bc的排列:abc,acb逃糟,求好后吼鱼,a和b交換蓬豁,得到bac
  • 固定b,求后面ac的排列:bac菇肃,bca地粪,求好后,c放到第一位置琐谤,得到cba
  • 固定c蟆技,求后面ba的排列:cba,cab斗忌。
  • 即遞歸樹:
         str:   a      b        c
            ab ac    ba bc      ca cb
      result: abc acb    bac bca    cab cba
    */
    //如果有重復(fù)元素质礼,將結(jié)果存到hashSet中去重
public class Permutation {
    public static void permutation(String str,String result){
        if(result.length()==str.length()){
            System.out.println(result);
        }else{
            for(int i=0;i<str.length();i++){
                if(result.indexOf(str.charAt(i))<0){
                    permutation(str,result+str.charAt(i));
                }
            }
        }
    }
    public static void main(String[] args){
        String str="abc";
        String result="";
        permutation(str,result);
    }       
}

第二種方法:
/*遞歸另一種寫法:
從集合中依次選出每一個(gè)元素,作為排列的第一個(gè)元素织阳,然后對(duì)剩余的元素進(jìn)行全排列眶蕉,如此遞歸處理,

  • 從而得到所有元素的全排列唧躲。以對(duì)字符串a(chǎn)bc進(jìn)行全排列為例造挽,我們可以這么做:以abc為例:
  • 固定a,求后面bc的排列:abc弄痹,acb饭入,求好后,a和b交換肛真,得到bac
  • 固定b,求后面ac的排列:bac毁欣,bca,求好后,c放到第一位置串述,得到cba
  • 固定c执解,求后面ba的排列:cba,cab纲酗。
public class Pass { 
     HashSet<String> set = new HashSet<String>();
     public void Permutation(char[] c,int begin){
            if(c.length==0)
                return;
            if(begin==c.length-1){
                System.out.println(c);
            }else{
                for(int i=begin;i<c.length;i++){                
                        Swap(c,i,begin);
                        Permutation(c,begin+1);//固定好當(dāng)前一位,繼續(xù)排列后面的
                        Swap(c,i,begin);                                                                
                }
            }           
        }
    public void Swap(char[] c,int i,int begin){
        if(i!=begin){
            char temp=c[i];
            c[i]=c[begin];
            c[begin]=temp;
        }       
    }       
    public static void main(String[] args) {
        Pass ps=new Pass();
        char[] c={'a','b','c'};
        ps.Permutation(c,0);
    }  
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末右蕊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吮螺,更是在濱河造成了極大的恐慌饶囚,老刑警劉巖帕翻,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嘀掸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)睬塌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門歇万,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贪磺,你說我怎么就攤上這事≡低欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵苏研,是天一觀的道長(zhǎng)腮郊。 經(jīng)常有香客問我,道長(zhǎng)轧飞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任大渤,我火速辦了婚禮掸绞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衔掸。我一直安慰自己,他們只是感情好较曼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布振愿。 她就那樣靜靜地躺著弛饭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪孩哑。 梳的紋絲不亂的頭發(fā)上翠桦,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音销凑,去河邊找鬼。 笑死澎蛛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谋逻。 我是一名探鬼主播桐经,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼气堕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茎芭,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤誓沸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拜隧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年薇组,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坐儿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宋光。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炭菌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出黑低,到底是詐尸還是另有隱情,我是刑警寧澤克握,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布菩暗,位于F島的核電站掰曾,受9級(jí)特大地震影響停团,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佑稠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一讶坯、第九天 我趴在偏房一處隱蔽的房頂上張望番电。 院中可真熱鬧辆琅,春花似錦、人聲如沸婉烟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昙衅。三九已至,卻和暖如春而涉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背啼县。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工沸久, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留余蟹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓窑睁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親卵慰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子佛呻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容