帮忙看看问题在哪里?从n个元素中取出k个元素的组合算法
#include <stdio.h>#define N 100
int a[N],nn;
void put(int *a,int m)//输出元素
{
int i;
for(i=1;i<=m;i++)
printf("%d",a[i]);
printf("\n");
}
void zuhe(int n,int k)//从n个元素中取出k个元素的组合
{
nn=k;
if(n==k)//1种组合
{
for(;n>0;n--)
a[n]=n;
put(a,nn);
}
if(k==1)//k种组合
{
for(;n>0;n--)
{
a[k]=n;
put(a,nn);
}
}
if(k>1&&n>k)
{
zuhe(n-1,k);//1.从n-1个元素中取出k个元素的组合
a[k]=n;//2.第k个元素取n;
zuhe(n-1,k-1);//再从n-1个元素中取出k-1个元素的组合
}
}
void main()
{
zuhe(5,2);//从5个元素中取出2个元素的组合
}