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
本篇完!
热门推荐
如何清洗摩托车前端排气
摩托车排气问题的解决方法有哪些?这些方法对车辆性能有何影响?
国产航母下水了,新科技亮相;为何大船不装小核炉?
27亿美元1艘伯克3!美国版055大驱DDG(X)新图曝光,还造得起吗?
8艘055型导弹驱逐舰,战斗力到底如何?能否打击美航母舰队
南艺音乐专业:你的留学梦想启航地
书法大师教你写一副惊艳春联
春联最早起源于唐朝?揭秘春联背后的历史渊源
南北方过年大战:春联 vs 窗花
英国人工智能博士留学奖学金申请全攻略
留学英国必备指南:解锁各类奖学金申请秘籍
英国留学签证指南
留学英国新纪元:全面指南——从准备到申请
雪莲菌的危害有哪些
自驾游爱好者的电车与油车选择之难:环保优势与长途便捷的博弈
2024油车和电车该选择买哪个?有哪些优缺点?
解读占星术中的水梦
周公解梦梦见水预兆什么
“反向过年”:春运新趋势背后的中国家庭变迁
春节不回家,如何守护心理健康?
食盐与高血压有何关系?如何有效减盐?这个讲座都讲清楚了!
人人行动,全民控盐
人人行动,全民控盐
老人说:“墓碑五不立,立后人丁散”,是哪5不立?有什么依据
老人说“新坟不过社,三年不立碑”,清明节新坟扫墓有讲究吗?
临港——上海海边之城
黄海1号公路,此生必驾!
社会环境对人性格的影响
厦门科技馆亲子游:400项互动体验等你打卡!
厦门亲子游必打卡四大宝藏景点