动态规划学习
2016-06-06 21:56
141 查看
1,最长子数组问题
dp[i]表示以A[i]结尾的最大子数组的和。这种情况下有两种可能,一、dp[i]只包含A[i];二、dp[i]不只包含A[i],也包含前面的一些数字,至少要包含A[i-1],这种情况下,dp[i]=dp[i-1]+A[i]。所以得到如下dp[i]的递归关系式:
dp[i] = max(A[i], dp[i-1]+A[i])
同时 ,我们需要得到初始值,也就是dp[0],显然以A[0]结尾的最大子数组的和dp[0]即为A[0],dp[0]=A[0]。
2,最小穿过路径问题
dp[i]表示以A[i]结尾的最大子数组的和。这种情况下有两种可能,一、dp[i]只包含A[i];二、dp[i]不只包含A[i],也包含前面的一些数字,至少要包含A[i-1],这种情况下,dp[i]=dp[i-1]+A[i]。所以得到如下dp[i]的递归关系式:
dp[i] = max(A[i], dp[i-1]+A[i])
同时 ,我们需要得到初始值,也就是dp[0],显然以A[0]结尾的最大子数组的和dp[0]即为A[0],dp[0]=A[0]。
int maxSubArray(int A[], int N) { int maxsum= A[0]; int *dp = new int ; dp[0] = A[0]; for(int i = 1; i < len; i++){ dp[i] = max(dp[i-1]+A[i], A[i]); maxsum = max(dp[i], maxsum); } return maxsum; }
2,最小穿过路径问题
相关文章推荐
- MATLAB中为控件(uicontrol)绑定Callback函数(回调函数)
- 进程与线程共享的内容整理
- 看懂信息检索和网络数据挖掘领域论文的必备知识总结
- android之外部文件存储和读取
- 年轻人能为世界做什么
- android 消息处理机制
- 经典排序算法 - 快速排序Quick_sort
- leetcode 191. Number of 1 Bits
- java笔记2
- C++走向远洋——64(项目三、数组类模板)
- 《JavaScript学习笔记》:阻止默认行为
- [Leetcode]292. Nim Game
- 《Nodejs开发加密货币》之十七:共识机制,可编程的利益转移规则
- vector中pair的排序方法
- golang在linux下的开发环境部署[未完]
- Android手势识别——上下左右滑动、屏幕上下左右中区域处理
- Displaying Bitmaps Efficiently总结
- java_包装类
- 剑指Offer----面试题28:字符串的排列 & 去重
- 装修计划