组合数(dfs)

来源:互联网 发布:淘宝5金冠童装店铺排行 编辑:程序博客网 时间:2024/06/08 17:00

组合数

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
输入
输入n、r。
输出
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
样例输入
5 3
样例输出
543542541532531521432431421321
因为数据量不大,所以可以采用递归的方式进行深度搜索!
#include<stdio.h>int p[11]={0};//数组用于存放每一次深搜后的数列int n,m;//之所以定义在外面,是因为在输出的时候,循环的次数为mvoid dfs(int x,int y){if(y==0){for(int j=m;j>=1;j--)//输出m个数的序列{printf("%d",p[j]);}printf("\n");}else{for(int i=x;i>=1;i--)//运用递归进行深度搜索{p[y]=i;dfs(i-1,y-1);}}}int main(void){scanf("%d%d",&n,&m);dfs(n,m);//深度搜索函数return 0;}


0 0
原创粉丝点击