nyoj组合数
2016-03-01 12:05
169 查看
算法:深搜
描述 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
输入输入n、r。输出按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。样例输入5 3
样例输出543
542
541
532
531
521
432
431
421
321
代码:
描述 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
输入输入n、r。输出按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。样例输入5 3
样例输出543
542
541
532
531
521
432
431
421
321
代码:
#include<iostream> #include <string> #include <cstring> #include <algorithm> using namespace std; int a[13],b[13],step; void dfs(int i,int cur,int deep) { for(int j=i;j>0;j--) { if(!a[j]) { if(b[cur-1]>j)//控制每位是递减地 { b[cur]=j; a[j]=1; if(cur==deep) { for(int k=1;k<=deep;k++) cout<<b[k]; cout<<endl; } dfs(i-1,cur+1,deep); a[j]=0; } } } } int main() { int n,m; b[0]=12; while(cin>>n>>m) { memset(a,0,sizeof(a)); dfs(n,1,m); } return 0; }
相关文章推荐
- Oracle数据库Sql语句详解之SELECT查询基本语法
- Spring的注入方式
- 考研信息查找
- iOS文件目录
- nyoj组合数
- matlab 基本用法
- 解决 Linux 下 SSH 远程连接服务卡慢的全过程
- appstore和腾讯的Entitlements
- UVA - 1471 Defense Lines 防线
- iOS开发中如何合理地制造BUG
- elcyCtsiLdekniL.141
- mediacodec编解码少帧问题
- hdu 1232 畅通project
- Android SQLITE数据类型
- maven无法下载私有库中的jar包
- Android 5.0学习之动画
- 利用HTML5开发Android笔记
- SAML - SSO(转)
- Spring之Spring MVC
- 局域网映射外网教程(超实用)