#include<stdio.h>
//int make_sign[10];//标记数组,如:make_sign[1]=0表示 1这个数字没有走过
int number[10];//用来存 数字 number[3]=1;表示输出的第三个数是1
int n,r;//n:一共有几个数,相当于每次走有几个路径可以选择
void combination(int limits,int layer)//layer:当前层数
{
int i;
if(layer > r)
{
for(i = 1; i <= r; i ++)
printf("%d",number[i]);
printf("\n");
}
else
{
for(i = limits; i <= n - (r - layer); i ++)//当前层数能选的数字范围
{
number[layer] = i;
combination(i +1, layer + 1);
}
}
}
int main ()
{
number[0] = 0;
scanf("%d%d",&n,&r);
combination(1,1);
return 0;
}
组合数(优化,限制路径)输出由小到大
最新推荐文章于 2023-01-08 16:14:46 发布