hdu 1027 Ignatius and the Princess II

来源:互联网 发布:货拉拉软件 编辑:程序博客网 时间:2024/05/16 06:09

题意:求出数字1-n的第m个全排列

1.调用函数

#include<iostream>#include<algorithm>#define maxn 1000+5using 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+5using 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;}


 

0 0
原创粉丝点击