回复
#jitoa #全排列函数(C++版)
忙忙忙困困困
发布于 2023-11-13 09:01
浏览
0收藏
本博客由 金陵科技学院-开放原子开源社 徐晨璐编写
一:next_permutation()函数,作用是输出所有比当前排列 排列大的排列(顺序为由小到大排)
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
string str;
cin>>str;
while(next_permutation(str.begin(),str.end()))
cout<<str<<endl;
return 0;
}
/*或者写为:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main(){
char str[100];
cout<<"请输入原序列:";
cin>>str;
int len=strlen(str);
while(next_permutation(str,str+len)){
cout<<str<<endl;
}
return 0;
}
*/
二:perv_permutation()函数,作用是输出比当前排列小的排列 (顺序:从大到小)
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
string str;
cout<<"请输入原序列:" ;
cin>>str;
while(prev_permutation(str.begin(),str.end()))
cout<<str<<endl;
return 0;
}
/* 或写为
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
char str[100];
cout<<"请输入原序列:" ;
cin>>str;
int len=strlen(str);
while(prev_permutation(str,str+len))
{
cout<<str<<endl;
}
return 0;
}
如果要得到几个数的全排列,还可以对上方的函数进行一些更改
比如对于next_permutation()函数,它只对比自己大的排列起作用,所以可以对输入的序列进行由小到大的排序,因为最后的总个数不包含第一个最小的那个序列,所以要在最后的总数上加1,才是这几个数进行全排列的结果。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int cmp(char a,char b)
{
return a<b;
}
int main()
{
char str[100];
int sum=0;
cout<<"请输入序列:";
cin>>str;
int len=strlen(str);
sort(str,str+len,cmp);
while(next_permutation(str,str+len))
{
cout<<str<<endl;
sum++;
}
cout<<sum<<endl;
return 0;
}
分类
标签
已于2023-11-16 17:39:51修改
赞
2
收藏
回复
相关推荐