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

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

          全排列算法示例

          package com.sitinspring;

          /**
           * 全排列算法示例
          如果用P表示n個元素的排列,而Pi表示不包含元素i的排列,(i)Pi表示在排列Pi前加上前綴i的排列,那么,n個元素的排列可遞歸定義為:
          如果n=1,則排列P只有一個元素i
          如果n>1,則排列P由排列(i)Pi構(gòu)成(i=1、2、.、n-1)。
          根據(jù)定義,容易看出如果已經(jīng)生成了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 和風(fēng)細(xì)雨 閱讀(314) 評論(0)  編輯  收藏 所屬分類: 算法

          主站蜘蛛池模板: 甘德县| 清水县| 宝丰县| 贡山| 商丘市| 天峻县| 潼南县| 吉安市| 临澧县| 高州市| 霍城县| 余干县| 龙游县| 抚松县| 建瓯市| 陆川县| 炉霍县| 若羌县| 图木舒克市| 唐海县| 普洱| 剑川县| 彭泽县| 晋城| 香格里拉县| 高要市| 开鲁县| 孝感市| 岚皋县| 沁阳市| 凯里市| 翁牛特旗| 连州市| 府谷县| 阿尔山市| 霞浦县| 郓城县| 清新县| 贵阳市| 子长县| 吐鲁番市|