首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个排列组合的有关问题

2013-09-06 
一个排列组合的问题假设有个数组 int array[3][5] 有数字0-8我要往array里面填充0-8 列出所有可能的组合

一个排列组合的问题
假设有个数组 int array[3][5] 有数字0-8
我要往array里面填充0-8 列出所有可能的组合 怎么写法?
[解决办法]

#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",'A'+c1-comb[j]);
            printf("\n");
        }
    }
    return;
}
int main(int argc,char **argv) {
    if (argc<3) {
        printf("%s 组合下标 组合上标\n",argv[0]);
        return 1;
    }
    c1=atoi(argv[1]);
    if (c1<1 
[解决办法]
 MAX_NUM<c1) {
        printf("1<=组合下标<=%d\n",MAX_NUM);
        return 2;
    }
    c2=atoi(argv[2]);
    if (c2<1 
[解决办法]
 c1<c2) {
        printf("1<=组合上标<=组合下标\n");
        return 3;
    }
    comb[0]=c2;
    combination(c1,c2);
    return 0;
}

热点排行