全排列的实现方法

xiaoxiao2021-02-28  59

#include <iostream> #include <cstring> #include <algorithm> using namespace std; /*递归实现(一) int n; int visit[11],ans[11]; void dfs(int depth) { if(depth>n){ for(int i=1;i<=n;i++) cout<<ans[i]; cout<<endl; } else{ for(int i=1;i<=n;i++){ if(visit[i]==0){ visit[i]=1; ans[depth]=i; dfs(depth+1); visit[i]=0; } } } } int main() { while(cin>>n){ memset(visit,0,sizeof(visit)); dfs(1); } return 0; } */ /* //递归实现(二) int n; int visit[11],ans[11]; void dfs(int depth) { for(int i=1;i<=n;i++){ if(visit[i]==0){ visit[i]=1; ans[depth]=i; if(depth==n){ for(int i=1;i<=n;i++) cout<<ans[i]; cout<<endl; } else dfs(depth+1); visit[i]=0; } } } int main() { while(cin>>n){ memset(visit,0,sizeof(visit)); dfs(1); } return 0; } */ /*STL next_permutation(a+0,a+n)实现 int main() { int n; char a[100]; while(cin>>n){ int num=1; for(int i=1;i<=n;i++) num*=i; for(int i=0;i<n;i++) a[i]='A'+i; for(int i=1;i<=num;i++){ for(int j=0;j<n;j++) cout<<a[j]; cout<<endl; next_permutation(a+0,a+n); } } } */
转载请注明原文地址: https://www.6miu.com/read-47081.html

最新回复(0)