《此算法不是本人自己的,先声明、算法是CSDN上面看到》我在此保留已做他用
1、非递归实现
void fun()
{
int stack[10],top=0;
int curNum=1;
int count=0;
while(1)
{
stack[top++]=curNum;
if(top==6)
{
int i = 0;
for(i=0;i<6;i++);
printf("%d,",stack[i]);
printf("\n");
count++;
curNum=stack[--top];
}
curNum++;
while(curNum>10)
curNum=stack[--top]+1;
if(top<0) break;
}
printf("%d",count);
}
2、递归实现
void combination(int m,int n,int comb[]) {
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;
}