#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;
}
比如“1,2,3....10”,1到10这10个数,显示他的所有可能组合情况(排列顺序无所谓)
最新推荐文章于 2023-03-27 14:44:42 发布