给你22个数,随机选出5个,一共能组出多少组,
例如  1 2 3 4 5,
把5 4 3 2 1 等相同数得剔除, 不重复 1 2 3 4 5
 1 2 3 4 6等等。。谢了~~~

解决方案 »

  1.   

    如果我记得不错的话通用公式应该是
    n!/((n-m)!m!)
      

  2.   

    对是组合问题
    不考虑顺序的那种
    n!/[(n-m)!m!]
      

  3.   

    随机选5个数。定义个treeset,长度为5,往里放从22位数里挑选出的5位。 排序 OK。。
      

  4.   

    22选5的全部组合public class Combine {
    public static int[] outPut = new int[5];//结果集 public static int[] inPut = new int[22]; public static void main(String[] args) {
    //初始化
    for (int i = 1; i <= 22; i++) {
    inPut[i - 1] = i;
    }
    combine(21, 4);//22选5
    } public static void combine(int n, int k) {
    int i, j;
    for (i = n; i >= k; i--) {
    outPut[k] = inPut[i]; if (k > 0)
    combine(i - 1, k - 1);//递归
    else {
    for (j = 0; j < 5; j++)
    System.out.print(outPut[j] + ",");
    System.out.println(); }
    }
    }}
      

  5.   

    如果只是不重复组合问题的话,可以用一般组合算法就可以
    一般组合算法:
    假如一个组合可以表示为:c1c2.....cr
    (1),求满足不等式cj<n-r+j的最大下表i,
        即i=max{j|cj<n-r+j}
    (2),ci= ci+1;
    (3),cj=c(j-1)+1,j=i+1,i+2.....r
    上述是求从n个数中选出r个的组合数