![](https://img-blog.csdnimg.cn/img_convert/1db303ed1f642d37d354063b5269c930.png)
![](https://img-blog.csdnimg.cn/img_convert/a67c581b91f5537085f476f2d2a4d33d.png)
全排列规律:
![](https://img-blog.csdnimg.cn/img_convert/404fdbdf6272eed1901ff7715b52ffae.png)
![](https://img-blog.csdnimg.cn/img_convert/3fea61a94cbba9a0946ec1dafc04fae7.png)
1递归
#include<bits/stdc++.h>
//递归调用全排列
using namespace std;
const int Maxn = 10;
bool visit[Maxn];
char sequence[Maxn];
void GetPermutation(string str , int index){
if(index == str.size()) {
for(int i = 0; i < str.size(); i++){
cout<<sequence[i];
}
cout<<endl;
}
for(int i = 0;i < str.size();i++){
if(visit[i]){
continue;
}
visit[i] = true;
sequence[index] = str[i];
GetPermutation(str , index+1);
visit[i] = false;
}
}
int main(){
string str;
while(cin >> str){
sort(str.begin(),str.end());
GetPermutation(str , 0);
cout<<endl;
}
return 0 ;
}
2非递归
3系统函数
#include<bits/stdc++.h>
//使用系统调用函数 next_permutation
using namespace std;
int main(){
string str;
while(cin >> str){
sort(str.begin(),str.end());
do{
cout << str << endl;
}while(next_permutation(str.begin(),str.end()));
}
return 0 ;
}