标签:
题意:求出数字1-n的第m个全排列
1.调用函数
#include<iostream> #include<algorithm> #define maxn 1000+5 using namespace std; int n,m; int ans[maxn]; int main() { while(cin>>n>>m) { for(int i=1;i<=n;i++) ans[i]=i; while(--m) { next_permutation(ans+1,ans+n+1); } cout<<ans[1]; for(int i=2;i<=n;i++) cout<<" "<<ans[i]; cout<<endl; } return 0; }
2.手写函数
#include<iostream> #define maxn 1000+5 using namespace std; int ans[maxn]; int visit[maxn]; int n,m,sum; int flag; void print() { cout<<ans[1]; for(int i=2;i<=n;i++) cout<<" "<<ans[i]; cout<<endl; } void dfs(int d) { if(d==n+1) { if(sum==m) { print(); flag=1; return; } else sum++; } for(int i=1;i<=n;i++) { if(!visit[i]) { ans[d]=i; visit[i]=1; dfs(d+1); visit[i]=0; if(flag) return; } } } int main() { cin.sync_with_stdio(false); while(cin>>n>>m) { for(int i=1;i<=n;i++) ans[i]=i,visit[i]=0; sum=1; flag=0; dfs(1); } return 0; }
hdu 1027 Ignatius and the Princess II
标签:
原文地址:http://blog.csdn.net/zafkiel_nightmare/article/details/45920695