自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 最大子段和系列(二维子段和、环形数组子段和、最大m段和) 思路

一、最大子段和        F(i) =   a[i]      f

2014-08-28 23:13:46 2365

转载 字符串中连续出现最长子串

一,考虑边界问题。二,实现优化笛卡尔积组合,总体我是这样想的:就是纵向切出字符串的连续组合集合,在横向一对一跳跃比较集合元素。例如:abcbcabc  一,纵向切:得到所有字符串组合,注意:这里要求的是最多连续子字符串,其实就是优化笛卡尔积的原则,也是边界。  字符串共8位,以子串的长度为1,从字符串第一位开始切,且称为切:1----从a开始切:(字符串为abcbcab

2012-08-16 09:38:51 534

转载 Random Select Problem(数组中前k大数问题)

所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 转自(http://www.cppblog.com/superKiki/archive/2011/04/10/143858.html)解法1:我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn+k)。 解法2:利用选择排序或交互排序

2012-05-05 20:32:30 656

转载 挺简洁的一个快排, 递归及非递归

主要说下非递归的思路吧,就是把每次 p = partition(a, low, high) 的结果 low , p-1 , p+1, high都压栈#include "stdafx.h"#include #include  #define MAX_SIZE      10using namespace std; typedef int elem;

2012-05-03 16:50:48 445

转载 动态规划 (Dynamic Programming) 之 最长递增子序列(Longest Increase Subsequence)

既然已经说到了最长公共子序列,就把这个递增子序列也说了。同样的,这里subsequence表明了这样的子序列不要求是连续的。比如说有子序列{1, 9, 3, 8, 11, 4, 5, 6, 4, 19, 7, 1, 7 }这样一个字符串的的最长递增子序列就是{1,3,4,5,6,7}或者{1,3,4,5,6,19}。其实这个问题和前面的最长公共子序列问题还是有一定的关联的。假设我们的初始的

2012-04-28 15:44:33 433 1

原创 二分查找错误事例分析

#include int search(int array[], int n, int v){ int left, right, middle; left = 0, right = n; while (left < right) { middle = (left + right) / 2; if (array[midd

2011-10-24 16:45:12 606

转载 单链表寻找环的入口点

若存在环,如何找到环的入口点(即上图中的结点E)?解答:       如图中所示,设链起点到环入口点间的距离为x,环入口点到问题1中fast与low重合点的距离为y,又设在fast与low重合时fast已绕环n周(n>0),且此时low移动总长度为s,则fast移动总长度为2s,环的长度为r。则s + nr = 2s,n>0      ①s = x + y

2011-10-23 14:29:43 364

原创 单链表的快速排序

方法一:单链表的快速排序和数组的快速排序在基本细想上是一致的,以从小到大来排序单链表为例,都是选择一个支点,然后把小于支点的元素放到左边,把大于支点的元素放到右边。但是,由于单链表不能像数组那样随机存储,和数组的快排序相比较,还是有一些需要注意的细节:1. 支点的选取,由于不能随机访问第K个元素,因此每次选择支点时可以取待排序那部分链表的头指针。2. 遍历量表方式,由于不能从单链表的末尾向前遍历,

2011-10-22 22:35:05 317

原创 基数排序

主要步骤: 分配、 收集,然后对每一位做计数排序即可#include using namespace std;void assign(int* arr, int len, int* count, int radix){ int i; for(i=0; i<len; i++) { int k=(arr[i]/radix)%10; //arr[i]/radix 取个位、十位、

2011-10-22 17:48:04 215

原创 二分查找

二分查找写对了的确不容易!!!!!试试才知道!!!难怪1946年得出的算法到1962年才有人写对。往往当程序循环能终止时可以高效的得到正确值,但程序中可能包含死循环。int BinaryDiv(int *a, int l, int h, int val){ for(; ;) { if(l > h) return -1;

2011-10-20 20:47:33 174

转载 博弈

一.巴什博奕(Bash Game):首先我们来玩一个比较古老的报数游戏。A和B一起报数,每个人每次最少报一个,最多报4个。轮流报数,看谁先报到30.如果不知道巴什博弈的可能会觉得这个是个有运气成分的问题,但是如果知道的人一定知道怎样一定可以赢。比如A先报数的话,那么B一定可以赢(这里假定B知道怎么正确的报数)B可以这样报数,每次报5-k(A)个数,其中k(A)是A报

2011-10-20 17:18:50 339

Getting started with storm

入门Storm的经典材料,言简意赅,通俗易懂,配有例子。

2015-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除