C++库函数详解:next_permutation的使用方法
创作时间:
作者:
@小白创作中心
C++库函数详解:next_permutation的使用方法
引用
CSDN
1.
https://m.blog.csdn.net/m0_75266675/article/details/140232638
next_permutation是C++标准库中的一个非常实用的函数,主要用于生成序列的下一个排列。本文将详细介绍该函数的使用方法,包括普通数组、容器以及结构体的排列生成,并通过具体的代码示例帮助读者理解其工作原理。
函数简介
next_permutation函数用于生成某个序列的下一个排列。它通常在需要生成排列的问题中使用,比如全排列问题。
使用方法
- 普通序列:
next_permutation(起始地址,末尾地址+1) - 结构体:
next_permutation(起始地址,末尾地址+1,自定义排列)
例子
对于普通数组
int main()
{
int a[4] = { 1,2,3,4 };
do {
for (auto i : a)
{
cout << i << " ";
}
cout << endl;
} while (next_permutation(a, a + 4));
return 0;
}
输出结果:
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
对于vector等容器
int main()
{
vector<int>v{ 1,2,3,4 };
do {
for (auto i : v)
{
cout << i << " ";
}
cout << endl;
} while (next_permutation(v.begin(), v.end()));
return 0;
}
输出结果:
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
对于结构体
需要自定义比较函数:
struct test {
int val;
};
bool cmp(test t1, test t2) {
return t1.val < t2.val;
}
int main() {
test t[3];
t[0].val = 1;
t[1].val = 2;
t[2].val = 3;
do {
for (int i = 0;i < 3;i++) {//打印排列
cout << t[i].val << ' ';
}
cout << endl;
} while (next_permutation(t, t + 3, cmp));//获取下一个排列
}
输出结果:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
本篇完!
热门推荐
酵母菌:微生物世界里手握核武的超级杀手
CSGO泰坦全息贴纸价格调查
Excel ROW函数使用指南:从基础到实战应用
个人破产制度实施中的挑战与解决方案
财务净值解密:掌握这些步骤,轻松计算你的财务健康
别墅地下室防水防潮处理全攻略:三大问题解析与解决方案
河北园博园:绿意盎然的生态画卷
5G核心网的主要网元及其功能
常见的腰椎病有哪些类型?
电纺丝食品包装材料在制备过程中如何优化工艺参数以提高性能?
静电纺丝技术的工业化挑战与解决方案
游泳站立式跳入水技巧(掌握正确姿势,安全进入水中)
爆痘食物别误吃!抗痘饮食一次看
科学控痘,饮食避坑全攻略
干银耳和鲜银耳,哪个更营养?
项目小组组长如何管理组员
法院起诉欠款的短信通知有效吗
为什么打疫苗要禁酒?
神经网络如何解决异或问题?
如何测量眼睛的屈光度
米芾春联精选80副(含横批)
经营项目如何变更经营者
经典素描“分析画”,每一个结构都是经典!堪比教科书
张雪峰评价定向士官:什么专业最吃香?附招生专业名单
量化需求的业务价值:6种实用方法详解
老子无为而治(关于老子无为而治的基本详情介绍)
Excel中如何提取复姓?三种实用方法详解
带通信号的数字正交采样及实现方法
全市法院行政争议实质化解典型案例(上)
VI设计流程包括哪些主要步骤?