感觉自己太傻了,开始用递归做的,结果超时,然后开始改成DP。结果没时间了。最后我的DP代码如下,大神们看看有没有错,可惜没办法检测了。
public static int dpSoution(int row,int col,int[][] array){
int max=0;
int[][] dp=new int[row][col];
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(i==0&&j==0){
dp[i][j]=array[0][0];
}else if(i==0){
dp[i][j]=dp[i][j-1]+array[i][j];
}else if(j==0){
dp[i][j]=dp[i-1][j]+array[i][j];
}else{
int tmp=dp[i][j-1]>dp[i-1][j]?dp[i][j-1]:dp[i-1][j];
dp[i][j]=tmp+array[i][j];
}
if(dp[i][j]<max)
max=dp[i][j];
}
}
int result=-max+1;
return result;
}