组合数
2016-04-10 12:58
309 查看
#include<iostream> #include<cstring> using namespace std; int m, n; int a[15]; bool vis[15]; void dfs(int i,int step) { if(step == n+1) { for(int j=1; j<=step-1; j++) cout << a[j]; cout << endl; return; } for(int k=m; k>=1; k--) { if(k<a[step-1] && !vis[k]) { a[step] = k; vis[k] = true; dfs(i-1, step+1); a[step] = m; vis[k] = false; } } } int main() { while(cin >> m >> n) { memset(vis, false, sizeof(vis)); memset(a, m, sizeof(a)); for(int i=1; i<=m; i++) { a[i] = i; } dfs(m,1); } return 0; }
#include <iostream> #include<cstring> using namespace std; int m, n; int k = 100; int a[15]; bool vis[15]; void dfs(int x) { if(x == n+1)///当搜到第4个的时候要退出了 { for(int j=1; j<=n; j++)///输出选好的三个数 cout << a[j]; cout << endl; return; } for(int i=m; i>=1; i--)///从m开始往回找 { if(!vis[i] && i<k) /// 没访问过 并且小于a[x] { a[x] = i; k = i; vis[i] = true; dfs(x+1); k = 100; vis[i] = false; } } } int main() { while(cin >> m >> n) {/// 5 3 memset(vis, false, sizeof(vis)); for(int i=1; i<=10; i++) a[i] = i; dfs(1); } return 0; }5 3
543
542
541
532
531
521
432
431
421
321
相关文章推荐
- Sharepoint 构建轻量型应用之传出电子邮件设置!
- Linux内核分析——可执行程序的装载
- android入门之使用adb shell 查看data目录下的SQLite数据库
- ConcurrentModificationException异常
- Android权限
- WaitForMultipleObjects使用详解
- 3最短路的几种解法 ------例题< 最短路 >
- Unity UGUI图文混排源码(二)
- 表示数值的字符串
- Unity UGUI图文混排源码(二)
- IOS开发 随笔
- 【机房重构】导出Excel
- DML、DDL、DCL区别
- neutron agent-list 没有任何输出 AMQP server on controller:5672 is unreachable:
- Unity UGUI图文混排源码(一)
- Unity UGUI图文混排源码(一)
- Fibonacci数列的递归和非递归
- 【Android】找不到类
- android Fragment的切换(解决replace的低效)
- 窗口句柄HWND和实例句柄HINSTANCE