全排列 next_permutation()
2023-02-18 16:34:30 时间
全排列
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
相关文章
- [PHP] 实现路由映射到指定控制器
- [PHP] 命令行执行整合pathinfo模拟定时任务
- [PHP] 自定义错误处理
- [PHP] url的pathinfo模式加载不同控制器的实现
- [PHP] 自动加载的实现
- [PHP] PHP请求Socket接口测试
- [PHP] 读取大文件并显示
- [PHP] Oauth授权和本地加密
- 学习ASP.NET Core Blazor编程系列十七——文件上传(上)
- 学习ASP.NET Core Blazor编程系列十六——排序
- 学习ASP.NET Core Blazor编程系列十五——查询
- 学习ASP.NET Core Blazor编程系列十四——修改
- 学习ASP.NET Core Blazor编程系列十三——路由(完)
- 学习ASP.NET Core Blazor编程系列十二——路由(下)
- 多线程编程学习笔记系列文章目录
- 学习ASP.NET MVC 编程系列文章目录
- 学习ASP.NET Core Razor 编程系列文章目录
- 使用 ASP.NET Core MVC 创建 Web API 系列文章目录
- 学习ASP.NET Core Blazor编程系列文章之目录
- 学习ASP.NET Core Blazor编程系列十一——路由(中)