本帖最后由 andy861025 于 2009-10-12 22:10:43 编辑

解决方案 »

  1.   

    判断随即选出的三个数和前面是否相同就可以了 插入数据库用insert 其余楼主你会的吧
      

  2.   

    请楼主移步:Java中的排列组合问题(一)
      

  3.   

    有没有好的建议与想法呀!
    JAVA算法实现从000到999之间挑选出个十百三位不重复的数字
    就是个位,十位,百位,不能有重复。如:123,231,132,213,312,321 算为重复,只能取最小的123 这6个三位数只算为一个不重重复的三位数组合会有120*120*120种
    这组合会生成27个不重复的三位数字
    如:012/012/013  
    有:000 001 003 ..... 223 比对的话,有没有好的算法呢?
    这些大的组合下的三位数(000 001 003 ..... 223 )如何有效率的去与000-999这1000个三位数比与统计
      

  4.   

    贴一个求JAVA算法实现从000到999之间挑选出个十百三位不重复的数字的算法import java.util.List;/**
     * <pre>
     * 求m取n的所有组合。
     * m个数分别为0,1,2...m-1.
     * 算法简述:
     * 二个组合,若仅有元素顺序不同,视其为同一个组合。
     * 左位系低位,右位系高位。
     * 按自然的取法取第一个组合(各数位分别是:0,1,2...n-1),以后的所有组合都经上一个组合变化而来:
     * 从右至左,找到有增量空间的位,将其加1,使高于该位的所有位,均比其左邻位大1,从而形成新的组合。
     * 若所有位均无增量空间,说明所有组合均已被遍历。
     * 使用该方法所生成的组合数中:对任意组合int[] c,下标小的数必定小于下标大的数.
     * </pre>
     */
    public class Combination {
    int n, m;
    int[] pre;// previous combination. public Combination(int n, int m) {
    this.n = n;
    this.m = m;
    } /**
     * 取下一个组合。可避免一次性返回所有的组合(数量巨大,浪费资源)。 if return null,所有组合均已取完。
     */
    public int[] next() {
    if (pre == null) {// 取第一个组合,以后的所有组合都经上一个组合变化而来。
    pre = new int[n];
    for (int i = 0; i < pre.length; i++) {
    pre[i] = i;
    }
    int[] ret = new int[n];
    // 将 pre 数组复制到数组 ret 中
    System.arraycopy(pre, 0, ret, 0, n);
    return ret;
    }
    int ni = n - 1, maxNi = m - 1;
    while (pre[ni] + 1 > maxNi) {// 从右至左,找到有增量空间的位。
    ni--;
    maxNi--;
    if (ni < 0)
    return null;// 若未找到,说明了所有的组合均已取完。
    }
    pre[ni]++;
    while (++ni < n) {
    pre[ni] = pre[ni - 1] + 1;
    }
    int[] ret = new int[n];
    System.arraycopy(pre, 0, ret, 0, n);
    return ret;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
    Combination c = new Combination(3, 10);
    int[] ret = new int[3];
    int count = 0;
    while((ret=c.next())!=null) {
    for(int i : ret)
    System.out.print(i);
    System.out.println();
    count ++;
    }
    System.out.println(count);


    }
    }