用一个算法算出: 000 -  111   之间所有的排列数
      如下示例:000 
                001
                010
                011
                111
                ......

解决方案 »

  1.   

    import java.util.ArrayList;   
    import java.util.Arrays;   
    import java.util.List;   
     public class FullSort {      
        private static int NUM = 3;   
      
           private static void sort(List datas, List target) {   
            if (target.size() == NUM) {   
                for (Object obj : target)   
                    System.out.print(obj);   
                System.out.println();   
                return;   
            }   
            for (int i = 0; i < datas.size(); i++) {   
                List newDatas = new ArrayList(datas);   
                List newTarget = new ArrayList(target);   
                newTarget.add(newDatas.get(i));   
                newDatas.remove(i);   
                sort(newDatas, newTarget);   
            }   
        }   
      
        public static void main(String[] args) {   
            String[] datas = new String[] { "0", "0", "1" };   
            sort(Arrays.asList(datas), new ArrayList());   
        }   
      
    }  
      

  2.   


    for(int i=0;i<2;i++)
     for(int j=0;j<2;j++)
      for(int k=0;k<2;k++)
       printf("%d%d%d\n",i,j,k);
      

  3.   

    package boke;/**
     * 回溯法
     * 
     * @since jdk1.6
     * @author 毛正吉
     * @version 1.0
     * @date 2010.05.25
     * 
     */
    public class NAllArrangement {
    private int count = 0; // 解数量
    private int n; // 输入数据n
    private int[] a; // 解向量
    private int[] d; // 解状态 /**
     * @param args
     */
    public static void main(String[] args) {
    //测试例子
    NAllArrangement na = new NAllArrangement(5, 100);
    na.tryArrangement(1); } public NAllArrangement(int _n, int maxNSize) {
    n = _n;
    a = new int[maxNSize];
    d = new int[maxNSize];
    } /**
     * 处理方法
     * 
     * @param k
     */
    public void tryArrangement(int k) {
    for (int j = 1; j <= n; j++) { // 搜索解空间
    if (d[j] == 0) {
    a[k] = j;
    d[j] = 1;
    } else { // 表明j已用过
    continue;
    } if (k < n) { // 没搜索到底
    tryArrangement(k + 1);
    } else {
    count++;
    output(); // 输出解向量
    }
    d[a[k]] = 0; // 回溯
    }
    } /**
     * 输出解向量
     */
    private void output() {
    System.out.println("count = " + count);
    for (int j = 1; j <= n; j++) {
    System.out.print(a[j] + " ");
    }
    System.out.println("");
    }}
      

  4.   

     #1楼 得分:0回复于:2011-01-13 12:35:52Java codeimport java.util.ArrayList;   
    import java.util.Arrays;   
    import java.util.List;   
     public class FullSort {      
        private static int NUM = 3;   
      
           private static void sort(List datas, List target) {   
            if (target.size() == NUM) {   
                for (Object obj : target)   
                    System.out.print(obj);   
                System.out.println();   
                return;   
            }   
            for (int i = 0; i < datas.size(); i++) {   
                List newDatas = new ArrayList(datas);   
                List newTarget = new ArrayList(target);   
                newTarget.add(newDatas.get(i));   
                newDatas.remove(i);   
                sort(newDatas, newTarget);   
            }   
        }   
      
        public static void main(String[] args) {   
            String[] datas = new String[] { "0", "0", "1" };   
            sort(Arrays.asList(datas), new ArrayList());   
        }   
      
    }   
     
      

  5.   

    呵呵 ,我已经找到解决方案了。。000-111 转换成10进制也就是0-8
    for(int i=0;i<8;i++){
                            String sjin = Integer.toBinaryString(i);
                            if (sjin.length() != 3 && sjin.length() < 3) {
    int b = 3 - sjin.length();
    for (int w = 0; w < b; w++) {
    bf.append("0");
    }
    sjin = bf.toString() + sjin;
                                    System.out.println(sjin);
    bf.delete(0, bf.length());
    }
    }
      

  6.   

    模拟进制的方式int[] a = new int[3];
    Arrays.fill(a, 0);
    while (true) {
        if (a[0] == 2) {break;}
        for (int i=0; i<a.length; i++) {
            System.out.print(a[i]);
        }
        System.out.println();
        for (int i=a.length-1; i>=0; i--) {
            a[i]++;
            if (a[i] == 2) { //进位
                if (i==0) {break;}
                a[i] = 0;
            } else {
                 break;
            }
        }
    }