cb47a_c++_STL_算法_排列组合next_prev_permutation
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的更多相关文章
- 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) ...
- cb51a_c++_STL_算法_根据第n个元素排序nth_element
cb51a_c++_STL_算法_根据第n个元素排序nth_elementnth_element(b,n,e),比如最大的5个数排序,或者最小的几个数nth_element(b,n,e,p)对比:pa ...
- cb50a_c++_STL_算法_局部排序partial_sort
cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...
- cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition
cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...
- cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance
cb46a_c++_STL_算法_逆转和旋转reverse_rotateSTL算法--变序性算法reverse() 逆转reverse_copy()一边复制一般逆转rotate()旋转,某个位置开始前 ...
- cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据
cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据unique(b,e),删除连续性的,删除重复的数据,比如如果有两个连续的5,5,则留下一个.uniqu ...
- cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if
cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if remove_copy()//在复制过程中删除一些数据remove_copy_if() 删除性算法: ...
- cb43a_c++_STL_算法_删除_(1)remove_remove_if
cb43a_c++_STL_算法_删除_(1)remove_remove_ifremove()remove_if() 注意:1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没 ...
- cb42a_c++_STL_算法_替换_replace
cb42a_c++_STL_算法_替换_replacereplace(b,e,ov,nv),ov,old value, nv,new valuereplace_if(b,e,p,v) 根据p的条件,全 ...
随机推荐
- PHPstudy 修改数据库上传大小
要修改的地方已经标出来了 直接修改为你需要的值即可:
- SPL基础接口
Iterator 迭代器接口 SPL规定,所有实现了Iterator接口的class,都可以用在foreach Loop中.Iterator接口中包含5个必须实现的方法: interface Iter ...
- rfind()的使用
今天学了一个新函数 rfind 使用: str=123/456 str.rfind('/',1,6) 返回的是从1到6找最后一个/的位置
- js中时间戳和时间格式之间的转换
//时间格式转化 getNowDate(timestamp) { var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000 va ...
- 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...
- linux 去除^M 换行符
一般,在windows下写的shell脚本,都会去linux执行,都会有^M 符号,那么怎么去除呢? 第一种方法:cat -A filename 就可以看到windows下的断元字符 ^M要去除他,最 ...
- 由一次安全扫描引发的思考:如何保障 API 接口的安全性?
引言 前段时间,公司对运行的系统进行了一次安全扫描,使用的工具是 IBM 公司提供的 AppScan . 这个正所谓不扫不要紧,一扫吓一跳,结果就扫出来这么个问题. 我们的一个年老失修的内部系统,在登 ...
- [Wireshark]_001_入门
Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进 ...
- Cocos Creator 通用框架设计 —— 资源管理优化
接着<Cocos Creator 通用框架设计 -- 资源管理>聊聊资源管理框架后续的一些优化: 通过论坛和github的issue,收到了很多优化或bug的反馈,基本上抽空全部处理了,大 ...
- Java 从入门到精通-反射机制
导读 Java反射机制是开发者迈向结构化开发的重要一步,同时掌握了反射机制也就掌握了所有框架的核心实现思想. 认识反射机制 简单例子 通过以上的程序就会发现,除了对象的正向处理操作之外,还可以通过ge ...