您的位置:首页 > 其它

2中方法实现数学中组合问题《在10个数中找出任意6个数的组合,数字不能》

2013-03-18 15:06 731 查看
《此算法不是本人自己的,先声明、算法是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
=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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐