解决方案 »

  1.   

    pailie(3) pailie(aaa)aaa=i;
    aaa=j;
    aaa=k;
      

  2.   

    这是递归的一个实现,也可以循环遍历数组a实现
    楼主慢慢看吧
     public static void pailie(int length) {
            int a[]   = new int [length];//记录当前应该输出的值
            pp(length,a);
        }
        public static void pp(int length,int a[]) {
            if(length>0){
                for (int i = 0; i < 2; i++) {
                    a[length-1]=i;
                    pp(length-1,a);
                }
            }else{
                //pp(0)的时候输出所有值
                System.out.print(a[a.length-1]);
                for(int i = a.length-2; i >=0; i--){
                    System.out.print( " / " + a[i] );
                }
                System.out.println();
            }
        }
      

  3.   

    最简单的思路就是,楼主可以用Scanner接收控制台的一个整形参数,然后三个for循环
      

  4.   

    幂集问题么?老掉牙了。解决“排列组合问题”一类问题,其釜底抽薪的办法就是弄懂解空间树:
    import java.util.Scanner;public class Pailie {
    public static void pailie(int length){
    combineAllDfs(0, new int[length]);
    }
    public static void printOne(int[] array){
    System.out.print(array[0]);
    for(int i=1;i<array.length;i++){
    System.out.print(" / "+array[i]);
    }
    System.out.println();
    }
    public static void combineAllDfs(int level,int[] array){
    if(level==array.length-1){
    printOne(array);
    array[level]=1;
    printOne(array);
            array[level]=0;
    }else{
    //递归左子树
    combineAllDfs(level+1, array);
    array[level]=1;
    //递归右子树
    combineAllDfs(level+1, array);
    //回溯
    array[level]=0;
    }
    }

    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    pailie(n);
    }
    }另外,还有:全排列(包括字典序)、C(M,N)(可打表)、A(M,N)三个问题,希望lz练习一下,弄懂之后,排列组合算是入门了。
      

  5.   

    大虾,请问 C(M,N)(可打表)、A(M,N) 是什么意思啊
      

  6.   

    C(M,N):
    例如:C(3,2)应该输出,0/1/1  1/0/1 1/1/0
    “动态规划”俗称“打表”,用于减少递归算法的重复计算。
    有了全排列、C(M,N)之后,A(M,N)就可以求出了,因为A(M,N)=C(M,N)*A(N,N)