概念全排列的生成算法有很多种,有递归遍例,也有循环移位法等等。C++/STL中定义的next_permutation和prev_permutation函数则是非常灵活且高效的一种方法,它被广泛的应用于为指定序列生成不同的排列。本文将详细的介绍prev_permutation函数的内部算法。按照STL...
分类:
其他好文 时间:
2014-06-24 09:50:04
阅读次数:
246
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1294题意:思路:f[i][j][st]表示从(i,j)出 发到(i,j)停止组成的回路、状态为st的最小步数。从每个0的位置(i,j)进行BFS一次,得到所有的状态。判断一个路径是否包含某...
分类:
其他好文 时间:
2014-06-23 07:51:05
阅读次数:
241
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1975题意:给出一个带权有向图。求一个最大的K使得前K短路的长度之和不大于给定的值Sum。思路:首先,求出每个点到n的最短路。接着,使用优先队列,节点为(D,u)。首先将(dis[1],1)...
分类:
其他好文 时间:
2014-06-23 06:43:52
阅读次数:
188
命题Q。对于一个含有N个元素的基于堆叠优先队列,插入元素操作只需要不超过(lgN + 1)次比较,删除最大元素的操作需要不超过2lgN次比较。证明。由命题P可知,两种操作都需要在根节点和堆底之间移动元素,而路径的长度不超过lgN。对于路径上的每个节点,删除最大元素需要两次比比较(除了堆底元素),一次...
分类:
其他好文 时间:
2014-06-22 23:50:00
阅读次数:
510
“容器可容纳一些数据的模板类” “容器是包容其他对象的对象”两种类型:顺序容器、关联容器顺序容器关联容器访问成员顺序访问和随机访问经过优化关键键值访问任何改变vector长度的操作都会是已存在的迭代器失效,如erase()删除元素
分类:
编程语言 时间:
2014-06-22 23:26:15
阅读次数:
193
双向循环链表list
list是双向循环链表,每一个元素都知道前面一个元素和后面一个元素。
list和vector的区别:
在list中,由于其内存分配是非连续的,因此不能像vector那样用[]操作符取值,而只能用迭代器来访问list中的元素。list中提供的成员函数与vector类似,不过list提供对表首元素的操作push_front、pop_front,这是vec...
分类:
其他好文 时间:
2014-06-22 21:33:58
阅读次数:
215
list的底层采用数据结构是环形的双向链表, 相对于vector容器,list容器插入和删除操作付出的代价要比vector容器小得多,但是list带有链表的天生弱点,就是不支持随机访问。从内置的迭代器角度分析,vector容器对应的迭代器为随机访问迭代器,而list容器内置的迭代器则为双向迭代器。...
分类:
其他好文 时间:
2014-06-22 19:19:11
阅读次数:
163
C++ Prime确实有点难啊!看了好久都没弄清楚,一点点慢慢来。
#include
#include
#include
template class Queue;
//function template declaration must precede friend declaration in QueueItem
template
std::ostream& operator&...
分类:
其他好文 时间:
2014-06-21 22:49:01
阅读次数:
184
AVL跪的好彻底分段解决读取文件时间长压根没完成STL红黑代替AVL相比AVL红黑旋转更快,平衡要求没有那么高...
分类:
其他好文 时间:
2014-06-21 17:32:28
阅读次数:
174