java递归,实现求全排列

来源:互联网 发布:php框架有什么用 编辑:程序博客网 时间:2024/05/17 23:33
有1~n的n个整数,现要求打印出这n个数的所有可能的排列。比如 1 、2、3的全排列:

        1, 2, 3
        1, 3, 2
        2, 1, 3
        2, 3, 1
        3, 1, 2 

        3, 2, 1   

         我在网上找到了一个用递归求全排列的例子,稍微改了一下,现在贴出来,因为感觉这个例子挺有用的:

[java] view plaincopyprint?
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3. public class PaiLie {  
  4.   
  5.     /** 
  6.      * @param args 
  7.      */  
  8.     public static void main(String[] args) {  
  9.   
  10.             List<Integer> s=new ArrayList<Integer>();  
  11.             List<Integer> rs=new ArrayList<Integer>();  
  12.             for(int i=1;i<=3;i++)  
  13.                 s.add(i);  
  14.             pl(s,rs);  
  15.            
  16.   
  17.     }  
  18.     public static void pl(List<Integer> s,List<Integer> rs){  
  19.           
  20.           
  21.           if(s.size()==1)  
  22.           {  
  23.                 
  24.               rs.add(s.get(0));  
  25.               System.out.println(rs.toString());  
  26.               rs.remove(rs.size()-1);  
  27.                
  28.                 
  29.           }else{  
  30.                 
  31.               for(int i=0;i<s.size();i++){  
  32.                     
  33.                   rs.add(s.get(i));   
  34.                   List<Integer> tmp=new ArrayList<Integer>();  
  35.                   for(Integer a:s)  
  36.                      tmp.add(a);  
  37.                   tmp.remove(i);  
  38.                  pl(tmp,rs);  
  39.                  rs.remove(rs.size()-1);      
  40.                   
  41.               }  
  42.           }                     
  43.      }  
  44. }  
原创粉丝点击