举例
123的全排列:123,132,213,231,321,312
全排列的个数为 n!
STL 实现
char s[50];
cin>>s;
int k=strlen(s);
sort(s,s+k);
cout<<s<<endl;
while(k--){
next_permutation(s,s+strlen(s));
cout<<s<<endl;
}
DFS 实现
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int vis[17],ans[17];
int n;
void dfs(int depth)
{
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
vis[i]=1;
ans[depth]=i;
if(depth==n){
for(int j=1;j<=n;j++)
cout<<ans[j];
cout<<endl;
}
else dfs(depth+1);
vis[i]=0;
}
}
}
int main()
{
cin>>n;
memset(vis,0,sizeof(vis));
dfs(1);
}