本帖最后由 java2000_net 于 2008-08-04 16:57:00 编辑

解决方案 »

  1.   


    public class Test{
        public static void main(String[] args) {
            int a[]={1,2,3,4,5,6};
            perm(buf,0,buf.length-1);
        }
        public static void perm(int[] buf,int start,int end){
            if(start==end){
                for(int i=0;i<=end;i++){
                    System.out.print(buf[i]+" ");
                }
                System.out.println();
            }
            else{
                for(int i=start;i<=end;i++){
                    int temp=buf[start];
                    buf[start]=buf[i];
                    buf[i]=temp;
                    perm(buf,start+1,end);
                    temp=buf[start];
                    buf[start]=buf[i];
                    buf[i]=temp;
                }
            }
        }
    }
      

  2.   


    public class Test2{
        public static void main(String[] args) {
            int a[]={1,2,3,4,5,6};
            perm(a,0,a.length-1);
        }
        public static void perm(int[] buf,int start,int end){
            if(start==end){
                for(int i=0;i<=end;i++){
                    System.out.print(buf[i]+" ");
                }
                System.out.println();
            }
            else{
                for(int i=start;i<=end;i++){
                    int temp=buf[start];
                    buf[start]=buf[i];
                    buf[i]=temp;
                    perm(buf,start+1,end);
                    temp=buf[start];
                    buf[start]=buf[i];
                    buf[i]=temp;
                }
            }
        }
    }变量名写错了。
      

  3.   

    应该没问题了。public class Test2{
        public static void main(String[] args) {
            int a[]={1,2,3};
            perm(a,0,a.length-1);
        }
        public static void perm(int[] buf,int start,int end){
            if(start==end){
                for(int i=0;i<=end;i++){
                    System.out.print(buf[i]+" ");
                }
                System.out.println();
            }
            else{
                for(int i=start;i<=end;i++){
                    swap(buf,start,i);
                    perm(buf,start+1,end);
                    swap(buf,start,i);
                }
            }
        }
        private static void swap(int buf[],int i,int j){
         int temp=buf[i];
            buf[i]=buf[j];
            buf[j]=temp;
        }
    }