组合数(优化,限制路径)输出由小到大

来源:互联网 发布:testin众测知乎 编辑:程序博客网 时间:2024/04/29 01:07
#include<stdio.h>//int make_sign[10];//标记数组,如:make_sign[1]=0表示 1这个数字没有走过int number[10];//用来存 数字 number[3]=1;表示输出的第三个数是1int 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;}