类似stl中排列算法的组合算法

原创 2004年07月10日 13:53:00

conbination.h

这里就是我在codeproject上找到的组合函数。

用法:

template <class BidIt>
bool next_combination(BidIt n_begin, BidIt n_end,
BidIt r_begin, BidIt r_end)

template <class BidIt>
bool prev_combination(BidIt n_begin, BidIt n_end,
BidIt r_begin, BidIt r_end)

这连个函数对应于STL中的next_permutationprev_permutation。
类型BidIt是随机迭代器或者是指针。
假设有n和r两个容器。
那么明显,n_begin,n_end是n的一段范围。r_begin,r_end是r的一段范围。
n是需要排列的容器。
r是结果的输出和初始化。当第一次调用上述两个函数是r需要初始化成n中的前(后)N个元素,那样才能完成一次全排列。
例:

string n="abcd"; string r="ab"; do { cout<<r<<endl; }while(next_combination(n.begin(),n.end(),r.begin(),r.end()) 
在next_combination中r需要被初始化成n的前N个元素,在prev_combination中r需要被初始化成n的后N个元素

STL算法 -------- 排列组合

1. next_permutation()            原始数据为升序 2. prev_permutation()            原始数据为降序 #include #inc...
  • u011334621
  • u011334621
  • 2015年03月10日 11:56
  • 721

【C++ STL应用与实现】22: 函数组合之1:如何使用std::bind (since C++11)

本文总结了std::bind这个模板函数的用法,给出了std::bind绑定普通函数(函数指针)、lambda表达式、成员函数、成员变量、模板函数、嵌套std::bind等的语法细节及注意的问题。...
  • elloop
  • elloop
  • 2015年12月16日 07:31
  • 11340

hdu 5020 排列组合+stl map (或者离散化)

首先为了重复计算,先对点进行排序,然后选定一个点,找到这个点斜率相同的点,然后利用排列组合知识就能知道点对有c(2,n)个,因此只需枚举每个点,找到它序位后面的点中到它斜率相同的点为集合,然后每个集合...
  • qq_24451605
  • qq_24451605
  • 2015年02月10日 20:27
  • 474

STL源码剖析——STL算法之permutation排列组合

本文讲解的是STL算法中的permutation排列组合算法,根据输入序列,排列出下一个排列组合或前一个排列组合。...
  • chenhanzhun
  • chenhanzhun
  • 2014年09月30日 18:49
  • 1596

STL中计算排列组合关系的算法

算法思想:首先,从最尾端开始往前寻找两个相邻的元素,令第一个元素为*i,第二个元素为*ii,且满足 *i < *ii 。找到这样一组相邻元素后,再从最尾端开始往前检验,找出第一个大于*i的元素,令为*...
  • u011954296
  • u011954296
  • 2016年03月26日 13:36
  • 508

STL中的所有算法(70个)

STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象。     STL中算法大致分为四类:         1、非...
  • Robin__Chou
  • Robin__Chou
  • 2016年11月17日 19:10
  • 1034

使用STL输出组合序列 + UVa 441 Lotto

#include using namespace std; int a[140]; bool ok[140]; /* 输出从n个数中选m个数的组合字典序 以n=7,m=3为例 首先构造ok=111...
  • synapse7
  • synapse7
  • 2014年02月13日 00:05
  • 1020

C++ python STL 组合数递归算法(n个取m个数的组合数)

def c(n,m,out): if(m==0):  return 1 x=n while x>=m:  out.append(x)  if(c(x-1,m-1,out)):   print out ...
  • dpfordor
  • dpfordor
  • 2007年12月24日 23:29
  • 2974

全排列和全组合实现

转自:http://wuchong.me/blog/2014/07/28/permutation-and-combination-realize/ 全排列和全组合实现 记得@老赵之前在微博上吐槽...
  • ly969434341
  • ly969434341
  • 2016年04月28日 09:26
  • 1786

STL作为形参,数组的全组合和全排列

void Test(vector tNum){ tNum.push_back(2); cout
  • I_better
  • I_better
  • 2016年07月03日 21:16
  • 579
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:类似stl中排列算法的组合算法
举报原因:
原因补充:

(最多只允许输入30个字)