java遞迴,實現求全排列
阿新 • • 發佈:2019-01-08
有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?- import java.util.ArrayList;
- import java.util.List;
- publicclass PaiLie {
- /**
- * @param args
- */
- publicstatic
- List<Integer> s=new ArrayList<Integer>();
- List<Integer> rs=new ArrayList<Integer>();
- for(int i=1;i<=3;i++)
- s.add(i);
- pl(s,rs);
- }
- publicstaticvoid pl(List<Integer> s,List<Integer> rs){
- if(s.size()==1)
- {
- rs.add(s.get(0));
- System.out.println(rs.toString());
- rs.remove(rs.size()-1);
- }else{
- for(int i=0;i<s.size();i++){
- rs.add(s.get(i));
- List<Integer> tmp=new ArrayList<Integer>();
- for(Integer a:s)
- tmp.add(a);
- tmp.remove(i);
- pl(tmp,rs);
- rs.remove(rs.size()-1);
- }
- }
- }
- }