动态规划
文章平均质量分 57
stephen_wong
这个作者很懒,什么都没留下…
展开
-
LeetCode 72. Edit Distance
自然语言处理(NPL)里的一个问题,用动态规划解。dp[i][j]表示word1前i个字符和word2前j个z原创 2014-07-14 10:34:35 · 884 阅读 · 0 评论 -
PAT 1007. Maximum Subsequence Sum
求最大连续子序列。动态规划的思想。迭代数组a中的每个数a[i],用cur变量标识从前到a[i](包括a[i])的最大累和。当cur小于零时归零,意味如果这个从前到a[i]为止的子序列包括a[i], 那么必然和小于0, 索性不要考虑这个子序列,从下一处i+1开始重新计算。注意到:1. 如果最大连续子序列不唯一,则输出序号i和j最小的那个2. 若所有K个元素都是原创 2015-02-05 11:06:05 · 788 阅读 · 0 评论 -
LeetCode 152. Maximum Product Subarray
动态规划。dp[0][i]: A[0, ..., i-1]的maximum product subarray,dp[1][i]: A[0, ..., i-1)的minimum product subarray.初始化dp[0][0] = dp[1][0] = A[0].递推公式:dp[0][i] = max(dp[0][i-1]*A[i], dp[1][i-1]*A[i])原创 2015-02-23 19:19:27 · 859 阅读 · 0 评论 -
LeetCode 140. Word Break II (DP+DFS)
直接递归求解TLE(Time Limit Exceeded), 用vector<vector<string>> ret(s.size()+1)保存wordBreak的解MLE(Memory Limit Exceeded),采用DP+DFS通过测试。在LeetCode 139. Word Break的中,用dp[i]标识s.substr(0, i)是否可以由dict里的字符串组成;在此我们用dp[i]标识s.substr(0, i)的workBreak解的最后一个单词的集合。如输入["abcde原创 2015-02-23 10:39:42 · 3561 阅读 · 1 评论 -
LeetCode 132. Palindrome Partitioning II
动态规划。1. palindrome[i][j]==true, 表示s[i, ..., j] (i将其初始化为false. 有动态方程:if (s[i]==s[j] && (j-i<=2 || palindrome[i+1][j-1])){ palindrome[i][j] = true;}2. dp[i]标志子串s.substr(i)的minCuts将其初始原创 2015-02-15 13:15:05 · 712 阅读 · 0 评论 -
LeetCode 209. Minimum Size Subarray Sum (O(n)实现)
动态规划:len[i]: - 若存在begin使得sum(nums.begin()+begin, nums.begin()+i+1)>=s且sum(nums.begin()+begin-1, nums.begin()+i+1)- 反之,len[i] = len[i - 1] + 1;sum[i]: - 若存在上述begin, sum = sum(nums.begin()+beg原创 2015-08-02 18:12:14 · 830 阅读 · 0 评论 -
微软笔试题
March 27th, 2016Hihocoder 1285. 智力竞赛Two dimensional dynamic programming. rights[i][j] i: # of stages we have passed j: j chances we have used rights[i][j]: the minimal right an原创 2016-03-29 18:37:16 · 814 阅读 · 0 评论 -
背包问题
hihocoder 1038. 01 背包dp[i] 表示使用掉 i 张奖券(消耗掉 i 的空间)后,能获得的最大价值。代码:#include #include #include using namespace std;int main() { // Input int n, m; cin >> n >> m; vector needs, values;原创 2016-07-10 11:31:51 · 682 阅读 · 0 评论