小白书之求排列
来源:互联网 发布:淘宝客服参考用语 编辑:程序博客网 时间:2024/06/05 19:19
生成1—n的排列:
#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 longusing 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[N]; 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 longusing namespace std;const int N=101;int P[N];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[N]; 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 longusing namespace std;const int N=101;int P[N];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;}
0 0
- 小白书之求排列
- 暴力求解法 之 枚举排列
- 暴力求解法之枚举排列
- 分治之求排列的逆序数
- 求排列
- 求排列
- 求排列
- 求排列
- 求数组的全排列之字典序法
- 分治之归并排序 求排列的逆序数
- 递归求排列问题
- 求字符串全排列
- 求字符串全排列
- 1483 求原排列
- 求字符串排列
- 求字符串全排列
- 求字符串全排列
- 旋转法求排列
- Cocos2dx 3.0 过渡篇(二十六)C++11多线程std::thread的简单使用
- 29个你必须知道的Linux命令
- Ubuntu 14.04 下安装Skype聊天工具
- Delphi XE 学习序言
- extjs
- 小白书之求排列
- stl的list排序
- hdu 3627 Giant For(map+set模拟)
- GC Root 对象有哪些
- Matlab2014b与C/C++(VS2013)混合编程(未完)
- 排序1
- Android中SQLite应用详解
- hdu 3724 Encoded Barcodes(字典树)
- java线程的suspend()、stop()方法废弃原因