我试过了,全部循环输出可以实现,但是如果n大一点的话,系统n慢……循环操作啊,兄弟。在我机器上测试过了,超过8个数字的排列我的系统就会内存溢出,我可是256M的机器啊。
import java.util.*;public class MyClassCSDN {
  public MyClassCSDN() {
  }
  public static void main(String[] args) {
    try {
      MyClassCSDN myClassCSDN = new MyClassCSDN();
      int n = 5;//数值个数确定
      String[] strs = new String[n];
      int i = 0;
      for(i=0;i<n;i++) {
        strs[i] = Integer.toString(i+1);
      }
      //亦可自定n个其它数字,比如String[] str = {"12","22","2","3","12","213"};注意位数和n相等即可
      int k = n;
      ArrayList l=new ArrayList();
      for(i=0;i<k;i++) {
        l.add(strs[i]);
      }      ArrayList temp=myClassCSDN.N(l);
      for (i=0;i<temp.size ();i++){
        System.out.println((String)temp.get (i));
      }
    }
    catch(Exception e) {
      System.out.println(e);
    }
  }
  public ArrayList N (ArrayList list){
    ArrayList result=new ArrayList();
    if ( list.size ()==1 ) return list;
    else {
      for ( int i=0;i<list.size ();i++){
        String head=(String)list.get (i);
        ArrayList templist=(ArrayList)list.clone ();
        templist.remove (i);
        ArrayList tempresult=N(templist);
        if ( ! tempresult.isEmpty () ) {
          for ( int k=0;k<tempresult.size ();k++){
            result.add (head+" "+tempresult.get (k)) ;
          }
        }
      }
    }
    return result;
  }
}
//end