小白书之求排列
2015-09-11 17:03
351 查看
生成1—n的排列:
C++函数库调用生成排列:
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<string> #include<cctype> #include<cmath> #include<map> #include<set> #include<vector> #include<queue> #include<stack> #include<ctime> #include<algorithm> #include<climits> #define LL long long using namespace std; const int N=101; void print_permutation(int n,int *A,int cur) { if(cur==n) { for(int i=0;i<n;i++) cout<<A[i]<<' '; cout<<endl; } else { for(int i=1;i<=n;i++) { int ok=1; for(int j=0;j<cur;j++) { if(A[j]==i) { ok=0; break; } } if(ok) { A[cur]=i; print_permutation(n,A,cur+1); } } } } int main() { int n; while(cin>>n) { int A ; print_permutation(n,A,0); } return 0; }生成可重集的排列:
<pre name="code" class="cpp">#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<string> #include<cctype> #include<cmath> #include<map> #include<set> #include<vector> #include<queue> #include<stack> #include<ctime> #include<algorithm> #include<climits> #define LL long long using namespace std; const int N=101; int P ; void print_permutation(int n,int *A,int cur) { if(cur==n) { for(int i=0;i<n;i++) cout<<A[i]<<' '; cout<<endl; } else { for(int i=0;i<n;i++) { if(!i||P[i]!=P[i-1]) { int c1=0,c2=0; for(int j=0;j<n;j++) if(P[j]==P[i]) c1++; for(int j=0;j<cur;j++) if(A[j]==P[i]) c2++; if(c2<c1) { A[cur]=P[i]; print_permutation(n,A,cur+1); } } } } } int main() { int n; while(cin>>n) { int A ; for(int i=0;i<n;i++) cin>>P[i]; sort(P,P+n); print_permutation(n,A,0); } return 0; }
C++函数库调用生成排列:
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<string> #include<cctype> #include<cmath> #include<map> #include<set> #include<vector> #include<queue> #include<stack> #include<ctime> #include<algorithm> #include<climits> #define LL long long using namespace std; const int N=101; int P ; int main() { int n; while(cin>>n) { for(int i=0;i<n;i++) cin>>P[i]; sort(P,P+n); do { for(int i=0;i<n;i++) cout<<P[i]<<' '; cout<<endl; }while(next_permutation(P,P+n)); } return 0; }
相关文章推荐
- JavaScript日期格式化函数
- android抓包工具fiddler使用介绍 抓取 手机APP 中资源。
- 树状数组解析
- SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
- Hi~ o(* ̄▽ ̄*)ブ我们交往吧!记TCP的三次握手
- java4
- 使用RBL拦截垃圾邮件
- debian flam3 依赖文件
- 字符编码笔记:ASCII,Unicode和UTF-8,附带 Little endian和Big endian的解释
- c++模板类学习
- NSDate , DateTime 相互转化 ,根据本机显示时间
- 初识intent
- javascript html DOM 改变html
- html5 audio实现歌词同步
- C# 轻松获取路径中文件名、目录、扩展名等
- iOS开发脚踏实地学习day06--tableView,汽车品牌
- 第一天 快捷导航
- 【Developer Log】web的版本管理
- php跳转页面代码
- 瀑布流的实现