当前位置: 代码迷 >> Java相关 >> 一道面试题
  详细解决方案

一道面试题

热度:78   发布时间:2010-12-08 23:16:02.0
一道面试题
提示: 作者被禁止或删除 内容自动屏蔽
2010-12-08 15:16:02
linjx0123

等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
  得分:4 
程序代码:

public class Perm {
    private int[] a = new int[10];
   
    public void init(){
        for(int i=1;i<=9;i++){
            a[i]=i;   
        }
    }
   
    private void printNumber(){
        for(int j=1;j<=9;j++){
            System.out.print(a[j]+" ");
        }
        System.out.println();
    }
   
    public void range(int index){
        if(index==9){
            printNumber();
        }
        else{
            for(int i=index;i<=9;i++){
                int k = index;
                swap(i,k);
                range(k+1);               
                swap(i,k);
            }      
        }
    }
   
    private void swap(int i, int j){
        int temp =a[i];
        a[i]=a[j];
        a[j]=temp;
    }
   
    public static void main(String[] args) {
        Perm p = new Perm();
        p.init();
        p.range(1);
    }
}


简单的全排列问题。用递归或者分治法就可以解决问题。

----------------解决方案--------------------------------------------------------
楼上正解,不过还可以加稍一些!全排列稍微有点繁琐
----------------解决方案--------------------------------------------------------
  相关解决方案