- 博客(4)
- 收藏
- 关注
原创 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
184
原创 BFPRT算法C++实现
BFPRT算法是求数组中第k小(大)的数,时间复杂度为O(n)其算法思路与快排类似。只不过选择标杆值不一样,BFPRT是选择中位数组的中位数来当pvalue,而快排是随机选择。选择之后,进行递归调用,具体实现,请看代码:#ifndef BFPRT_H#define BFPRT_H//BFPRT算法是在不排序的情况下,找到第k小,或者第k大的数//这里以第k小的数为例,进行
2017-11-27 21:04:16
837
1
原创 随机快速排序C++实现
传统的随机快速排序,是选定一个数,然后以这个数为标杆,分为小于等于(标杆)区和大于(标杆)区。改进的快速排序,分为,小于区,等于区和大于区。这个划分的过程用partition函数实现。具体请看代码。#ifndef QUICKSORT_H#define QUICKSORT_H#include#include#includeusing namespace std;void sw
2017-11-27 13:31:28
1774
原创 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
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人