和風細雨

          世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

          全排列算法示例

          package com.sitinspring;

          /**
           * 全排列算法示例
          如果用P表示n個元素的排列,而Pi表示不包含元素i的排列,(i)Pi表示在排列Pi前加上前綴i的排列,那么,n個元素的排列可遞歸定義為:
          如果n=1,則排列P只有一個元素i
          如果n>1,則排列P由排列(i)Pi構成(i=1、2、.、n-1)。
          根據定義,容易看出如果已經生成了k-1個元素的排列,那么,k個元素的排列可以在每個k-1個元素的排列Pi前添加元素i而生成。
          例如2個元素的排列是1  2和2   1,對3個元素而言,p1是2  3和3  2,在每個排列前加上1即生成1 2 3和1 3 2兩個新排列,
          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 和風細雨 閱讀(307) 評論(0)  編輯  收藏 所屬分類: 算法

          主站蜘蛛池模板: 绥德县| 苍溪县| 中宁县| 新和县| 庆云县| 阳春市| 息烽县| 四会市| 涡阳县| 肇源县| 漳平市| 峡江县| 沈阳市| 昂仁县| 长宁区| 台江县| 永康市| 岐山县| 沛县| 宜昌市| 永德县| 灵丘县| 桐城市| 丹棱县| 宜君县| 黎城县| 饶阳县| 慈溪市| 嘉定区| 蛟河市| 黑河市| 凤阳县| 丰城市| 枞阳县| 阳城县| 姚安县| 云安县| 东丰县| 彝良县| 泌阳县| 栾城县|