算法
文章平均质量分 74
Longb2
这个作者很懒,什么都没留下…
展开
-
0/1背包问题
process函数表示,对c和p数组,当前第0至i-1个物品包括在内,已经花费了cost的空间,此时背包容量为bag, 此时求对第i个物品,如果不要,这process(c,p,i,cost,bag) = process(c,p,i+1,cost,bag) 如果当前剩余容量可以容纳第i个物品,那么,process(c,p,i,cost,bag)的取值为max(process(c,p,i+1,co原创 2017-12-05 17:37:31 · 188 阅读 · 0 评论 -
manacher算法及扩展
最近学习了一些算法,总结一下 manacher算法和扩展。 manacher算法是求一个字符串中,最大回文子串的长度。 #ifndef MANACHER_H #define MANACHER_H //Manacher算法 :找出字符串str中最长的回文子串 #define MIN(a,b) a<b?a:b #define MAX(a,b) a>b?a:b #include #include原创 2017-11-26 13:47:22 · 336 阅读 · 0 评论 -
随机快速排序C++实现
传统的随机快速排序,是选定一个数,然后以这个数为标杆,分为小于等于(标杆)区和大于(标杆)区。 改进的快速排序,分为,小于区,等于区和大于区。这个划分的过程用partition函数实现。 具体请看代码。 #ifndef QUICKSORT_H #define QUICKSORT_H #include #include #include using namespace std; void sw原创 2017-11-27 13:31:28 · 1799 阅读 · 0 评论 -
BFPRT算法C++实现
BFPRT算法是求数组中第k小(大)的数,时间复杂度为O(n) 其算法思路与快排类似。 只不过选择标杆值不一样,BFPRT是选择中位数组的中位数来当pvalue,而快排是随机选择。 选择之后,进行递归调用, 具体实现,请看代码: #ifndef BFPRT_H #define BFPRT_H //BFPRT算法是在不排序的情况下,找到第k小,或者第k大的数 //这里以第k小的数为例,进行原创 2017-11-27 21:04:16 · 857 阅读 · 1 评论