1.利用dfs求全排列
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100;
int vis[maxn];
int a[maxn];
int cnt;
int dfs(int n)
{
if(cnt == n)
{
for(int i = 1; i < n; i++)
cout<<a[i]<<" ";
cout<<a[n]<<endl;
}
for(int i = 1; i <= cnt; i++)
{
if(!vis[i] )
{
vis[i] = 1;
a[n+1] = i;
dfs(n+1);
vis[i] = 0;
}
}
}
int main()
{
cin>>cnt;
dfs(0);
return 0;
}
2.利用stl自带函数求
bool next_permutation(iterator start, iterator end);
next_permutation函数的返回值是布尔类型
next_permutation()函数功能是输出所有比当前排列大的排列,顺序是从小到大。
prev_permutation()函数功能是输出所有比当前排列小的排列,顺序是从大到小。
#include <bits/stdc++.h>
using namespace std;
int main(){
string str="abc";
while(next_permutation(str.begin(),str.end()))
cout<<str<<endl;
return 0;
}