
算法
文章平均质量分 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 · 213 阅读 · 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 · 355 阅读 · 0 评论 -
随机快速排序C++实现
传统的随机快速排序,是选定一个数,然后以这个数为标杆,分为小于等于(标杆)区和大于(标杆)区。改进的快速排序,分为,小于区,等于区和大于区。这个划分的过程用partition函数实现。具体请看代码。#ifndef QUICKSORT_H#define QUICKSORT_H#include#include#includeusing namespace std;void sw原创 2017-11-27 13:31:28 · 1834 阅读 · 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 · 888 阅读 · 1 评论