#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);
}
版权声明:本文为qq_42535651原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。