摘要: 一个M*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,先从左上走到右下,再从右下走到左上。第1遍时只能向下和向右走,第2遍时只能向上和向左走。两次如果经过同一个格子,则该格子的奖励只计算一次,求能够获得的最大价值。例如:3 * 3的方格。1 3 32 1 32 2 1能够获得的最大价... 阅读全文
posted @ 2015-10-12 11:37 Mose 阅读(791) 评论(0) 推荐(0) 编辑
摘要: 分析:这个和我们之前讲的0-1背包问题很像。思路1:我们显然可以把每种物品的每一件都作为一个新的物品按照普通0-1背包的方法做。但是0-1背包的时间复杂度是O(W * N) , 这里N = C1 + C2 + …+ Cn。思路2:换个角度我们用dp[i][j]表示前i件物品,总重量为j的时候的最大价... 阅读全文
posted @ 2015-10-12 10:45 Mose 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 分析:(1)笨方法,我们可以用普通最大子段和的方法解决这个问题。我们从每个位置“断开”环,然后按普通的最大子段和的方法去做。这样做的复杂度是O(n^2)。(2)巧妙点的方法,我们之所以要从某个位置切开是因为循环的最大子段和可能是跨越一部分头和尾。如上图,最优解可能是0..i, j + 1.. n –... 阅读全文
posted @ 2015-10-12 10:17 Mose 阅读(273) 评论(0) 推荐(0) 编辑