算法竞赛入门经典读书笔记(三)7.2枚举排列
来源:互联网 发布:js require方法 编辑:程序博客网 时间:2024/04/29 09:26
7.2.1生成1~n的所有排列
递归调用的方法可以实现。
#include <iostream>using namespace std;void print_permutation(int n,int *A,int cur){int i,j;if(cur==n){for(i=0;i<n;i++) cout<<A[i];cout<<endl;}else for(i=1;i<=n;i++){int ok=1;for(j=0;j<cur;j++)if(A[j]==i) ok=0;if(ok){A[cur]=i;print_permutation(n,A,cur+1);}}}int main(){int n,A[100],cur=0;cout<<"请输入整数n(n<=100):\n";while(cin>>n){for(int i=0;i<n;i++){A[i]=i+1;} print_permutation(n,A,cur);}return 0;}
生成可重集的排序
#include <iostream>#include <algorithm>using namespace std;void print_permutation(int n,int *P,int *A,int cur){int i,j;if(cur==n){for(i=0;i<n;i++) cout<<A[i]<<" ";cout<<endl;}else for(i=0;i<n;i++)if(!i||P[i]!=P[i-1]){int c1=0,c2=0;for(j=0;j<cur;j++) if(A[j]==P[i]) c1++;for(j=0;j<n;j++) if(P[j]==P[i]) c2++;if(c1<c2){A[cur]=P[i];print_permutation(n,P,A,cur+1);}}}int main(){int n,A[100],cur;int P[100];cin>>n;for(int i=0;i<n;i++) cin>>P[i]; sort(P,P+n);cur=0;print_permutation(n,P,A,cur);return 0;}
附:利用STL中的algorithm也可以~~灰常简单地说
#include <iostream>#include <algorithm>using namespace std;int main(){int n,A[100],cur=0;cout<<"请输入整数n(n<=100):\n";cin>>n;int i;for(i=0;i<n;i++){A[i]=i+1;} do{for(i=0;i<n;i++) cout<<A[i];cout<<endl;}while(next_permutation(A,A+i));return 0;}
利用stl生成给定集合的全排列
#include<iostream>#include<algorithm>using namespace std;int main(){int n,p[10];cin>>n;for(int i=0;i<n;i++){cin>>p[i];}cout<<endl;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;}
- 算法竞赛入门经典读书笔记(三)7.2枚举排列
- 算法竞赛入门经典读书笔记(三)7.2枚举排列
- 【算法入门竞赛经典】【7.2枚举排列】
- 枚举排列 -- 刘汝佳《算法竞赛入门经典》
- 《算法竞赛入门经典》枚举排列总结
- 算法竞赛入门经典读书笔记(二)7.1简单枚举
- 算法竞赛入门经典读书笔记(二)7.1简单枚举
- 《算法竞赛入门经典》-【第七章:暴力求解法】-7.2:枚举排列
- 算法竞赛入门经典第七章暴力求解法——枚举排列(记录向)
- 《算法竞赛入门经典》读书笔记(第一章)
- 算法竞赛入门经典读书笔记
- 算法竞赛入门-枚举-7.2.1-生成1~n排列
- 算法竞赛入门-枚举-7.2.4-下一个排列
- 《算法竞赛入门经典》习题2-10 排列(permutation)
- 算法竞赛入门经典 习题 2-10 排列(permutation)
- 算法竞赛入门经典 习题2-10 排列(permutation)
- 排列 算法竞赛入门经典刘汝佳
- 算法竞赛入门经典:第七章 暴力求解法 7.5枚举排列
- eclipse内存优化-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
- 随机生成十个不重复的整数
- scala编程基础
- jequry插件 - 感应插件(配合拖拽控件使用)
- Windows server 2008 -- Active Directory
- 算法竞赛入门经典读书笔记(三)7.2枚举排列
- 随机生成十个整数
- BaseAction
- jquery插件 - 自定义滚动条插件
- FPGA驱动LCD1602实现万年历
- Java 访问者模式(Visitor)
- jquery - 菜单插件(右键菜单,左键菜单)
- 创业笔记(八)
- Direct3D 简介