和風細雨

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

          全排列算法示例

          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)  編輯  收藏 所屬分類: 算法

          主站蜘蛛池模板: 宝山区| 怀来县| 梓潼县| 鄢陵县| 新安县| 临武县| 昂仁县| 和硕县| 宿州市| 木兰县| 黔东| 仁寿县| 济南市| 吴桥县| 崇州市| 大田县| 河间市| 雷州市| 墨江| 九台市| 乌恰县| 滁州市| 五华县| 斗六市| 长丰县| 邵阳县| 那坡县| 太白县| 根河市| 铜鼓县| 东安县| 钦州市| 松滋市| 沙坪坝区| 墨竹工卡县| 双牌县| 奉贤区| 河北区| 玉树县| 北海市| 广昌县|