和風(fēng)細(xì)雨

          世上本無(wú)難事,心以為難,斯乃真難。茍不存一難之見(jiàn)于心,則運(yùn)用之術(shù)自出。

          全排列算法示例

          package com.sitinspring;

          /**
           * 全排列算法示例
          如果用P表示n個(gè)元素的排列,而Pi表示不包含元素i的排列,(i)Pi表示在排列Pi前加上前綴i的排列,那么,n個(gè)元素的排列可遞歸定義為:
          如果n=1,則排列P只有一個(gè)元素i
          如果n>1,則排列P由排列(i)Pi構(gòu)成(i=1、2、.、n-1)。
          根據(jù)定義,容易看出如果已經(jīng)生成了k-1個(gè)元素的排列,那么,k個(gè)元素的排列可以在每個(gè)k-1個(gè)元素的排列Pi前添加元素i而生成。
          例如2個(gè)元素的排列是1  2和2   1,對(duì)3個(gè)元素而言,p1是2  3和3  2,在每個(gè)排列前加上1即生成1 2 3和1 3 2兩個(gè)新排列,
          p2和p3則是1  3、3  1和1  2、2  1,
          按同樣方法可生成新排列2 1 3、2 3 1和3 1 2、3 2 1。
           * 
          @author: sitinspring(junglesong@gmail.com)
           * @date: 2008-3-25
           
          */

          public class Permutation<T>{
              
          public static void main(String[] args){
                  String[] arr
          ={"1","2","3"};
                  
                  Permutation
          <String> a=new Permutation<String>();
                  a.permutation(arr,
          0,arr.length);
              }

              
              
          public void permutation(T[] arr,int start,int end){
                  
          if(start<end+1){
                      permutation(arr,start
          +1,end);
                      
                      
          for(int i=start+1;i<end;i++){
                          T temp;
                          
                          temp
          =arr[start];
                          arr[start]
          =arr[i];
                          arr[i]
          =temp;
                          
                          permutation(arr,start
          +1,end);
                          
                          temp
          =arr[i];
                          arr[i]
          =arr[start];
                          arr[start]
          =temp;
                      }

                  }

                  
          else{
                      
          for(int i=0;i<end;i++){
                          System.out.print(arr[i]);
                      }

                      System.out.print(
          "\n");
                  }

              }

          }

          posted on 2008-03-25 05:33 和風(fēng)細(xì)雨 閱讀(314) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 算法

          主站蜘蛛池模板: 罗平县| 临沧市| 庄浪县| 海林市| 古交市| 黑水县| 鄂伦春自治旗| 措美县| 通山县| 富顺县| 秀山| 黄陵县| 平利县| 论坛| 新疆| 比如县| 图木舒克市| 弥勒县| 资中县| 沂水县| 朝阳市| 肥乡县| 眉山市| 淮南市| 那曲县| 罗田县| 台北县| 石渠县| 台安县| 晴隆县| 临猗县| 博爱县| 勐海县| 长治市| 常山县| 榕江县| 左贡县| 兴仁县| 旬阳县| 墨竹工卡县| 若羌县|