next_permutation toj,poj 上习题小结
来源:互联网 发布:c语言win32编程 编辑:程序博客网 时间:2024/05/16 06:28
//next_permutation--sample#include<iostream>#include<algorithm>using namespace std;int main(){ int a[10],n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); while(next_permutation(a,a+n)) { for(int i=0;i<n;i++) cout<<a[i]; cout<<endl; } system("pause"); return 0; }
//toj3072#include<iostream>#include<cstdio>#include<stack>#include<algorithm>using namespace std;int a[11];int judge(int *a,int n){ stack <int> v; int i,k=0; for(i=1;i<=n;i++) { v.push(i); if(i==a[k]) { while(!v.empty()&&v.top()==a[k]) { v.pop(); k++; } } } if(v.empty())return 1; else return 0;}int main(){ int i,n,t,j; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) a[i]=i+1; do { if(judge(a,n)) { for(j=0;j<n;j++) printf("%d",a[j]); printf("\n"); } }while(next_permutation(a,a+n)); } return 0; }
//poj3785#include<iostream>#include<algorithm>using namespace std;int main(){ char a[90]; int t; cin>>t; for(int i=1;i<=t;i++) { cin>>i>>a; int len=strlen(a); if(next_permutation(a,a+len)==true) cout<<i<<" "<<a<<endl; else cout<<i<<" "<<"BIGGEST"<<endl; } return 0; }
//poj1146#include<iostream>#include<cstring>#include<algorithm>using namespace std;int main(){ char a[60]; while(cin>>a) { if(strcmp(a,"#")==0)break; int len=strlen(a); if(next_permutation(a,a+len)==1) cout<<a<<endl; else cout<<"No Successor"<<endl; } return 0; }
//1833poj#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){ int t,n,k; int a[1030]; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); for(int i=0;i<n;i++) scanf("%d",&a[i]); while(k--) { next_permutation(a,a+n); } for(int i=0;i<n;i++) printf("%d ",a[i]); printf("\n"); } return 0; }
以上的题都是next_permutation的应用,晚上就要机考了···检验最近学习成果的时候到了···求给力!