cb47a_c++_STL_算法_排列组合next_prev_permutation

使用前必须先排序。必须是 1,2,3或者3,2,1.否者结果不准确。如果, 1,2,4,6.这样数据不会准确
next_permutation()//原始数据是从小到大的, 1,2,3
prev_permutation() //原始数据是从大到小的,比如 3 ,2 ,1,则可以使用这个算法。

3个数字就6种组合。
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

返回值是ture,则还有下一个组合
false,则没有下一个组合了。

 /*cb47a_c++_STL_算法_排列组合next_prev_permutation

 使用前必须先排序。必须是 1,2,3或者3,2,1.否者结果不准确。如果, 1,2,4,6.这样数据不会准确
next_permutation()//原始数据是从小到大的, 1,2,3
prev_permutation() //原始数据是从大到小的,比如 3 ,2 ,1,则可以使用这个算法。 3个数字就6种组合。
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1 返回值是ture,则还有下一个组合
false,则没有下一个组合了。
*/ #include <iostream>
#include <algorithm>
#include <vector> using namespace std; template <typename TT8>
void print8(TT8 &ivec)
{
for (TT8::iterator iter=ivec.begin();iter!=ivec.end();++iter)
cout << *iter << ' ';
cout << endl;
} int main()
{
vector<int> ivec;
ivec.push_back();
ivec.push_back();
ivec.push_back(); print8(ivec); //next_permutation(ivec.begin(),ivec.end());//1 3 2,第二个组合
//print8(ivec);
//next_permutation(ivec.begin(), ivec.end());//2 1 3 第三个组合
//print8(ivec);
cout << "用循环列出所有的排列组合" << endl;
while (next_permutation(ivec.begin(), ivec.end()))
{
print8(ivec);
}
cout << "---------------" << endl;
vector<int> ivec2;
ivec2.push_back();
ivec2.push_back();
ivec2.push_back();
ivec2.push_back(); print8(ivec2);
cout << "---------------" << endl;
while (prev_permutation(ivec2.begin(), ivec2.end()))
{
print8(ivec2);
} return ;
}

cb47a_c++_STL_算法_排列组合next_prev_permutation的更多相关文章

  1. cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort

    cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort sort(b,e) sort(b,e,p) stable_sort(b,e) stable_sort(b,e,p) ...

  2. cb51a_c++_STL_算法_根据第n个元素排序nth_element

    cb51a_c++_STL_算法_根据第n个元素排序nth_elementnth_element(b,n,e),比如最大的5个数排序,或者最小的几个数nth_element(b,n,e,p)对比:pa ...

  3. cb50a_c++_STL_算法_局部排序partial_sort

    cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...

  4. cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition

    cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...

  5. cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance

    cb46a_c++_STL_算法_逆转和旋转reverse_rotateSTL算法--变序性算法reverse() 逆转reverse_copy()一边复制一般逆转rotate()旋转,某个位置开始前 ...

  6. cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据

    cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据unique(b,e),删除连续性的,删除重复的数据,比如如果有两个连续的5,5,则留下一个.uniqu ...

  7. cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if

    cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if remove_copy()//在复制过程中删除一些数据remove_copy_if() 删除性算法: ...

  8. cb43a_c++_STL_算法_删除_(1)remove_remove_if

    cb43a_c++_STL_算法_删除_(1)remove_remove_ifremove()remove_if() 注意:1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没 ...

  9. cb42a_c++_STL_算法_替换_replace

    cb42a_c++_STL_算法_替换_replacereplace(b,e,ov,nv),ov,old value, nv,new valuereplace_if(b,e,p,v) 根据p的条件,全 ...

随机推荐

  1. HomeLede 2020.5.27更新 UPnP+NAS+多拨+网盘+DNS优化+帕斯沃/Clash 无缝集成+软件包

    交流群:QQ 1030484865 电报 t.me/t_homelede   固件说明 基于Lede OpenWrt R2020.5.20版本(源码截止2020.5.27)及若干自行维护的软件包 结合 ...

  2. [批处理教程之Shell]002.Linux 常用命令大全

    这一次收集的是比较基础的 Linux 命令,其实 Linux 命令未必每个都要记住,只要在用到时能查阅到需要的命令的用法. 系统信息 *.显示机器的处理器架构(1)arch *.显示机器的处理器架构( ...

  3. Excel常用小方法

    Excel快捷键 Excel中处理工作表的快捷键 插入新工作表 Shift+F11或Alt+Shift+F1 移动到工作簿中的下一张工作表 Ctrl+PageDown 移动到工作簿中的上一张工作表 C ...

  4. List<T> 的扩展方法

    //List<T>.Take(m)      //取出 前m行 IEnumerable<Person> takeList = lstPerson.Take(4); foreac ...

  5. vc程序设计--图形绘制1

        利用绘图函数创建填充区.Windows通过使用当前画笔画一个图形的边界,然后用当前的刷子填充这个图形来创建-一个填充图形.共有三个填充图形,第一个是用深灰色画刷填充带圆角的矩形,第二个是采用亮 ...

  6. jchdl-GSL-实例 - 使用Intellij IDEA创建Mux

    https://mp.weixin.qq.com/s/yP9xKeg0iHJChuMPzxdJtA https://github.com/wjcdx/jchdl/blob/master/src/org ...

  7. Chisel3 - 基本数据类型

    https://mp.weixin.qq.com/s/bSrM-wLRn7O_75xYKeoaEQ   Chisel中的基本数据类型,不是Verilog中的Wire和Reg.Wire和Register ...

  8. JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...

  9. Java实现 LeetCode 567 字符串的排列(滑动窗口,处理区间内的字符数量)

    567. 字符串的排列 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列. 换句话说,第一个字符串的排列之一是第二个字符串的子串. 示例1: 输入: s1 = " ...

  10. Java实现 蓝桥杯 算法训练 递归求二项式系数

    算法训练 6-1 递归求二项式系数值 时间限制:10.0s 内存限制:256.0MB 问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 ...