全排列 next_permutation()
全排列
next_permutation()
在头文件<algorithm>里面有如下代码:
int a[];
do
{
}
while(next_permutation(a,a+n));
例子:
#include<bits/stdc++.h>
#include<set>
#include<vector>
#include<deque>
#include<map>
#include<queue>
using namespace std;
int main(){
int n;
cin>>n;
int * p = new int[n];
for (int i = 0; i < n; i++)
{
cin>>p[i];
}
sort(p,p+n);
do
{
for (int i = 0; i < n; i++)
{
cout<<p[i]<<" ";
}
cout<<endl;
} while (next_permutation(p,p+n));
cout<<endl;
string s = "aba";
sort(s.begin(), s.end());
do {
cout << s << '\n';
} while(next_permutation(s.begin(), s.end()));
}
输出:
3
1 2 3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
aab
aba
baa
prev_permutation
例子
#include<bits/stdc++.h>
#include<set>
#include<vector>
#include<deque>
#include<map>
#include<queue>
using namespace std;
int main(){
int n;
cin>>n;
int * p = new int[n];
for (int i = 0; i < n; i++)
{
cin>>p[i];
}
sort(p,p+n,greater<int>());
do
{
for (int i = 0; i < n; i++)
{
cout<<p[i]<<" ";
}
cout<<endl;
} while (prev_permutation(p,p+n));
cout<<endl;
string s = "aba";
sort(s.begin(), s.end());
do {
cout << s << '\n';
} while(prev_permutation(s.begin(), s.end()));
}
输出:
3
1 2 3
3 2 1
3 1 2
2 3 1
2 1 3
1 3 2
1 2 3
aab
因上求缘,果上努力~~~~ 作者:图神经网络,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/13700864.html