如题,就是输入n个数,从中取出m个数的组合,而却n和m都是输入的不确定的值.比如输入2,5,8四个数,取个数的组合,结果是2,5; 2,8; 5,8 谢谢

解决方案 »

  1.   

    给你个C的参考一下吧
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_NUM 26
    int comb[MAX_NUM];
    int c1,c2;
    void combination(int m, int n)
    {
        int i, j;
        for (i = m; i >= n; i--){
            comb[n] = i;        /* 选择当前的“头”元素 */
            if (n > 1){
                /* 进入下一次更小的组合问题 */
                combination(i - 1, n - 1);
            }else{
                /* 满了需要的组合数,输出 */
                for (j = comb[0]; j > 0; j--){
                    printf("%c", 65+c1-comb[j]);
                }
                printf("\n");
            }
        }
        return;
    }
    int main(int argc, char *argv[])
    {
        if (argc<3) {
            printf("%s 组合下标 组合上标\n",argv[0]);
            return 0;
        }
        c1=atoi(argv[1]);
        if (c1<1||26<c1) {
            printf("1<=组合下标<=26\n");
            return 0;
        }
        c2=atoi(argv[2]);
        if (c2<1||c1<c2) {
            printf("1<=组合上标<=组合下标\n");
            return 0;
        }
        comb[0]=c2;
        combination(c1, c2);        /* C(4, 2) */
        return 0;
    }