题目描述

输出全排列
可以利用stl中的next_permutation或者手写排序
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
char c[105];
int l;
int get(){
int i=l-1;
while(i>0&&c[i-1]>=c[i])
{
i--;
}
if(!i)
return 0;
int mp=i;
for(int j=i+1;j<l;j++)
{
if(c[j]<=c[i-1]) continue;
if(c[j]<c[mp]) mp=j;
}
swap(c[mp],c[i-1]);
sort(c+i,c+l);
return 1;
}
int main(){
int t;
cin>>t;
while(t--){
cin>>c;
l=strlen(c);
sort(c,c+l);
cout<<c<<endl;
while(get()){
cout<<c<<endl;
}
cout<<endl;
}
}
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
char c[105];
int l;
int main(){
int t;
cin>>t;
while(t--){
cin>>c;
l=strlen(c);
sort(c,c+l);
cout<<c<<endl;
while(next_permutation(c,c+l)){
cout<<c<<endl;
}
cout<<endl;
}
}
本文介绍了一种输出字符串所有可能全排列的方法,通过两种方式实现:一种是使用STL中的next_permutation函数,另一种是手动编写获取下一个排列的代码。这两种方法都首先对输入字符进行排序,然后依次输出所有可能的排列。
1581

被折叠的 条评论
为什么被折叠?



