51Nod 1384全排列
#include "iostream" #include "cstdio" #include "cstring" #include "algorithm" #include "map" using namespace std; char a[11]; vector<char> ans; bool visit[11]; int n; map<vector<char>,bool> m; void dfs(int k) { if(k==n){ if(m.find(ans)==m.end()){ m[ans]=1; for(int i=0;i<n;i++) printf("%c",ans[i]); printf("\n"); } return ; } for(int i=0;i<n;i++) { if(visit[i]) continue; ans[k]=a[i]; visit[i]=1; dfs(k+1); visit[i]=0; } } int main() { gets(a); int len=strlen(a); n=len; sort(a,a+len); memset(visit,0,sizeof(visit)); m.clear(); ans.resize(len); dfs(0); return 0; }