DFS之枚举排列组合
来源:互联网 发布:网上车市数据运维 编辑:程序博客网 时间:2024/06/07 03:23
枚举可重复排列的模板
#include<iostream>using namespace std;int n,m,ans[15];int a[15];//待排列的数存储在此bool vis[15];void dfs(int cnt)//按字典序输出n个数选m个数的所有排列{ if(cnt==m) { for(int i=0;i<m;i++) cout<<ans[i]<<" "; cout<<endl; return ; } for(int i=0;i<n;i++) { ans[cnt]=a[i]; dfs(cnt+1); }}int main(){ while(cin>>n>>m) { fill(vis,vis+15,0); for(int i=0;i<n;i++) cin>>a[i]; dfs(0); } return 0;}枚举不可重复的排列,加个标记数组即可。
#include<iostream>using namespace std;int n,m,ans[15];int a[15];//待排列的数存储在此bool vis[15];void dfs(int d,int cnt)//按字典序输出n个数选m个数的所有排列{ if(cnt==m) { for(int i=0;i<m;i++) cout<<ans[i]<<" "; cout<<endl; return ; } for(int i=0;i<n;i++) { if(!vis[i]) { ans[cnt]=a[i]; vis[i]=1; dfs(i+1,cnt+1); vis[i]=0; } }}int main(){ while(cin>>n>>m) { fill(vis,vis+15,0); for(int i=0;i<n;i++) cin>>a[i]; dfs(0,0); } return 0;}
枚举组合。
#include<iostream>using namespace std;int n,m,ans[15];int a[15];//待排列的数存储在此bool vis[15];void dfs(int d,int cnt)//按字典序输出n个数选m个数的所有组合{ if(cnt==m) { for(int i=0;i<m;i++) cout<<ans[i]<<" "; cout<<endl; return ; } for(int i=d;i<n;i++) { ans[cnt]=a[i]; dfs(i+1,cnt+1); }}int main(){ while(cin>>n>>m) { fill(vis,vis+15,0); for(int i=0;i<n;i++) cin>>a[i]; dfs(0,0); } return 0;}
0 0
- DFS之枚举排列组合
- 排列组合 dfs
- 排列组合枚举代码
- DFS 和排列组合
- hdu5379 dfs+排列组合
- dfs生成排列组合模板
- DFS 枚举
- hdu 1015 Safecracker【dfs 排列组合】
- 湖北民族学院oj(dfs+枚举) 之 彩票
- 非递归枚举排列组合(C++)
- 非递归枚举排列组合(C++)
- Gym 101138C Stickmen【枚举+排列组合】
- [ACM] hdu 1521 排列组合(组合+DFS)
- Hdu 1716 排列2【stl+dfs排列组合】
- bnuoj 52305 Around the World dfs+排列组合
- [51Nod 1677 Treecnt] 树上dfs+排列组合
- 【POJ 3187 Backward Digit Sums】 + DFS + 排列组合
- 蓝桥杯 算法训练 摆动序列 【排列组合 + DFS】
- Spring MVC数据绑定大全 .
- CentOS下yum update与yum upgrade的区别
- ndk下使用sqlite
- 【学习ios之路:UI系列】实现打电话,发短信,发邮件功能
- LINUX内核字符设备驱动模型
- DFS之枚举排列组合
- 错误1406.无法将数值写入键/Software/Classess/.htm/OpenWithList/devenv.exer的解决方案
- POJ2186 Popular Cows【Kosaraju】【强连通分量】
- robo-remote
- Android系统源码学习步骤1
- 平衡二叉树,插入,删除,C源码
- javase简单入门2 语法基础
- gsoap使用总结
- java3