stooge排序是一种递归排序算法,这种排序算法不仅慢于一般的有效排序算法(如:插入排序,合并排序,堆排序和快速排序),甚至慢于冒泡排序。是一种简单但低效的排序算法。...
分类:
其他好文 时间:
2014-06-07 01:26:17
阅读次数:
173
题目:给定两个串s1和s2,对s1串,我们可以将其分割成两部分,这两部分都不为空,而被分割成的两部分,又可以递归的进行分割,直到不能进行分割为止,也就是只有一个字符的时候,就不在分割了。问s2是否由s1的这种分割表示中,某步分割成的两部分交换得到的。这种交换可以在不同的分割点进行多次。
/* s1
|__________p____________| ...
分类:
其他好文 时间:
2014-06-05 11:09:06
阅读次数:
207
延迟标记像极了线段书,不再多说。
区间反转在树伸展到位之后,也变成了简单的递归交换左右儿子。
愈发感觉到伸展树简直太漂亮了,伸展操作更是诱惑到不行 ,总之数据结构太有魅力了。
比较简单,就直接上模板了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pr...
分类:
其他好文 时间:
2014-06-05 08:33:14
阅读次数:
190
算法训练 瓷砖铺放
时间限制:1.0s 内存限制:512.0MB
问题描述
有一长度为N(1
例如,长度为4的地面一共有如下5种铺法:
4=1+1+1+1
4=2+1+1
4=1+2+1
4=1+1+2
4=2+2
编程用递归的方法求解上述问题。
输入格式
只有一个数N,代表地板的长度
输出格...
分类:
其他好文 时间:
2014-06-05 03:49:46
阅读次数:
211
快速排序的随机化版本并不是一种全新的排序算法,而是在快速排序的基础上加入随机化的因素,因素,因而仍然将其作为第四种方法(快速排序)的一种补充。
为什么要提出快速排序的随机化版本,主要是对于快速排序法其划分情况的好坏会直接影响排序的效率,而且,快速排序的平均性能较好,所以,加入随机化成分,可以使该算法对于所有输入均能获得较好的平均情况性能。...
分类:
其他好文 时间:
2014-06-05 03:30:11
阅读次数:
225
向量偏移——由“食物链”引发的总结
http://poj.org/problem?id=1182这道食物链题目是并查集的变型,很久以前做的一次是水过的,这次仔细地研究了这“食物链”,无非就是运用向量偏移,从以前节点与节点转化成向量与向量的关系。我们可以把矛盾的产生得益于向量偏移时的结果。
直接引出向量偏移的运用。
下面是POJ一位大牛这样理解的,本人稍有修改。
对于集合里...
分类:
其他好文 时间:
2014-06-05 03:29:27
阅读次数:
205
穷举:生成所有候选解,然后找出需要的解。
回溯:把解表示成向量,每个分量取自一个有限集合。从部分解开始,每次添加解的一个分量,然后判断如果有可能扩展成完整解则递归下去,否则换成下一个。可以看做是隐式图上的深度优先搜索。
回溯/穷举的复杂度,最坏时和后者一样,通常情形因为不必遍历所有子节点,还是比较快的。
回溯框架:
backtrack(a[], k)
if a[0,...,k] i...
分类:
编程语言 时间:
2014-06-05 02:39:10
阅读次数:
246
本题应该挺经典的,因为可以使用好多方法过,适合训练多种高级数据结构和算法。
这里使用AVL平衡二叉树的解法,时间还可以,大概300ms吧,内存很省188k,因为这里使用指针,没有浪费内存。
这里使用Geeks上面的AVL的做法,使用递归更新树,而不使用双亲指针,试了下使用双亲指针,真的好麻烦,要维护多一个指针,容易出错很多。
递归操作二叉树是非常优雅的。
而且不需要使用任何STL容器,非常...
分类:
其他好文 时间:
2014-06-05 01:56:58
阅读次数:
269
快速排序的平均性能相当好,故快速排序通常是用于排序的最佳的使用选择。
该算法的关键是对数组进行初始划分。进行完数组划分之后,需要递归地将划分出来的两子数组分别进行快速排序。...
分类:
其他好文 时间:
2014-06-05 01:11:08
阅读次数:
258
#includeusing namespace std;//是否单调递增bool isdan(int
a[],int lev,int len){ if(len==1) return true; if(lev==len-1) { return true; }
else { if(a[lev]>a[le...
分类:
其他好文 时间:
2014-05-31 01:21:47
阅读次数:
257