1690: CZY的组合数烦恼
时间限制: 3 Sec 内存限制: 128 MB提交: 54 解决: 24
[ 提交][ 状态][ 讨论版]
题目描述
czy最近对组合数产生了浓厚的兴趣,一天他心血来潮,想排n个数字,但是很快他发现种类太多了,于是他决定从中随机找出m个数排,但还是太多了,所以他想请聪明的你写个程序帮助他找到所有种类的排列
输入
输入包括多组测试数据,每组包括一行整数n(1<=n<10),m(1<=m<=n),空格间隔
输出
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
样例输入
5 3
样例输出
543 542 541 532 531 521 432 431 421 321
【代码】
#include<stdio.h> #include<string.h> int n,m; int num[10]; void dfs(int top,int tot) { if(tot>=m) { for(int i=0;i<m;i++) printf("%d",num[i]); puts(""); return; } for(int i=top;i>0;i--) { num[tot]=i; dfs(i-1,tot+1); } return ; } int main() { while(scanf("%d%d",&n,&m)!=EOF) dfs(n,0); return 0; }