描述
一张边长为n
的二维矩阵, 0
表示可走, -1
表示障碍物(不可走), 1
表示樱桃(可走, 走过之后变为0
因为被摘掉了). 从0,0
往返n-1,n-1
的路上, 最多摘多少樱桃.
思路
其实可以看做两个人同时从0,0
出发, 同时到达n-1, n-1
, 最多摘到多少樱桃. 如果两个人位置相同并且当前是樱桃, 那么只摘一次. 开一个三维dp
数组, dp[r1][c1][c2]
表示甲从r1, c1
出发, 乙从r2, c2
出发, 最多摘的数量. 因为到达当前状态的步数是相同的, 所以r1+c1 == r2+c2
, r2
的值可以用前三个变量表示出来.
代码
1 | class Solution(object): |