参考:http://www.cnblogs.com/mfryf/archive/2012/09/06/2672881.html
有一个有 n 个项的统计直方图,假定所有的直方条 (bar) 的宽度一样。在所有边与 x 轴 和 y 轴平行的长方形中,求该被该直方图包含的面积最大的长方形。
DP :从左开始找到左边的最大值;从右开始找到右边的最大值另一类是:Trapping rain water凹槽问题,看到的方法是从两端向中间,如果有一边的值大于则,查找另外一边直到大于
int seq=0;
int sum=0;
while(left<right)
{
if(arr[left]<arr[right]){
seq=Max(arr[left],seq);
sum+=seq-arr[left];
left++;
}else{
seq=Max(arr[right],seq);
sum+=seq-arr[right];
right++;
}
}
- 最大连续和,dp[i]代表前i个的最大值,dp[i-1]>0 dp[i]=dp[i-1]+arr[i]
dp[i-1]<0 dp[i]=arr[i] 最大子矩阵
最大0/1矩阵
01背包 ???
poj 有个天平砝码问题DP其他
LIS LCS
最长公共子串 最长公共子序列
最长递增子序列