C语言求m中n个数字的组合

#include <stdio.h>

int num[10]; //存放数字,默认最大为10个
int m,n; //排列个数 m中n个数字
void dfs(int dep)
{
if(dep == n+1) //找到n个数字后输出
{
for(int i = 1; i <= n; i++)
{
printf("%d “,num[i]);
}
printf(”\n");
return ;
}
//因为组合不允许有重复,那么前面数字一定要比后面小
for (num[dep] = num[dep - 1] + 1; num[dep] <= m - n + dep; num[dep]++)
//保证后面数字要比前面的大,而且要给后面的数字留有空间
{
dfs(dep + 1);
}

}
int main()
{
scanf("%d %d",&m,&n);
dfs(1);
}

C语言求m中n个数字的组合