题目链接:全排列问题
还是上代码吧。。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<algorithm>
using namespace std;
bool vis[15];
int a[15];
int n;
int print()
{
for(int i=1;i<=n;i++)
cout<<setw(5)<<a[i];
cout<<endl;
}
void dfs(int k)
{
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
a[k] = i;
vis[i] = 1;
if(k == n)
print();
else dfs(k+1);
vis[i] = 0;
}
}
}
int main()
{
cin>>n;
dfs(1);
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
char a[555];
char b[555];
int num[555];
int n,tot;
void print()
{
tot ++;
for(int i=1;i<=n;i++)
cout<<b[i];
cout<<endl;
}
void dfs(int k)
{
for(int i=0;i<26;i++)
{
if(num[i])
{
b[k] = i+'a';
num[i] --;
if(k == n)
print();
else dfs(k+1);
num[i] ++;
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i],num[a[i] - 97] ++;
dfs(1);
cout<<tot<<endl;
return 0;
}