Maximum Number of Points with Cost
给一个数组, 求如何取到最大值, 取得方法是从每行取一个,但是距离上一行取的时候要减去格子的距离。
这题就dp。。。
class Solution {
public long maxPoints(int[][] points) {
int n = points.length;
int m = points[0].length;
long[][] dp = new long[n][m];
long res = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
long tmp = 0;
for(int k = 0; k < m; k++) {
if(i == 0)
{
tmp = points[i][j];
break;
}
else
{
tmp = Math.max(tmp, points[i][j] + dp[i - 1][k]- Math.abs(k - j));
}
}
dp[i][j] = tmp;
res = Math.max(res, dp[i][j]);
}
}
return res;
}
}