算法
文章平均质量分 57
幻影天河
纷纷世事无穷尽,天数茫茫不可逃
展开
-
连续子数组的最大和问题(一维和二维)To the Max (POJ 1050)
一维数组的连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 这是一个典型的DP问题,递推公式是DP(i) = max{DP(i-1) + A(i),A(i)} 解释:DP(i)代表末尾元素为A(i)的连续子数组的最大和。这个地推公式来自于一个显而易见的事实:在遍历数组的原创 2015-01-25 16:35:33 · 1746 阅读 · 1 评论 -
hihoCoder 1061 Beautiful String
beautiful string的处理原创 2016-05-25 14:01:23 · 713 阅读 · 0 评论 -
hihocoder 股票价格
题目的本质是给定区间最大值和最小值的动态查找,并且需要支持删除操作。这是一个rmq问题。可以用一个vector保存已插入的股票信息(按照时间排序),并且在插入的时候维护一个区间最大最小信息,删除时候可以通过二分查找来查找第一个超过删除时间节点的元素,假设该元素的index为l,如果查询节点为r,那么相当于查询(l,r)区间的最大最小值。需要注意的一点是维护删除元素index的时候需要维护已删除元素原创 2016-06-28 10:08:08 · 433 阅读 · 0 评论 -
编程之美阅读心得——中国象棋将帅问题
今天翻开了刚买的《编程之美》,看到了这一章节,想到了一个解法,如下 byte x; for(x = 11; x if(x%10 == 0) continue; if((x/10)%3 != (x%10)%3 ) printf("A=%d,B=%d",x/10,x%10); } 接下看了一下第一个解法,其中定义了好多宏,感觉好复杂,庆幸的是接下给出的一个解法与我的思路比较相近。原创 2013-11-12 16:30:28 · 707 阅读 · 0 评论