链接:牛客网NC49
题意、输入、输出:
分析:dp
思路:如分析,写就完了。
代码:
import java.util.*;
public class Solution {
/**
* 变相
* @param n int整型
* @param a1 int整型一维数组
* @param a2 int整型一维数组
* @param a3 int整型一维数组
* @param m int整型一维数组
* @return int整型
*/
public int solve (int n, int[] a1, int[] a2, int[] a3, int[] m) {
// write code here
int[][] dp=new int[3][(int)1e5+5];
dp[0][0]=a1[0];
dp[1][0]=a2[0];
dp[2][0]=a3[0];
for(int j=0;j<n-1;j++){
for(int i=0;i<3;i++){
int[] money=new int[]{a1[j+1],a2[j+1],a3[j+1]};
if(dp[i][j+1]<dp[i][j]+money[i]){
dp[i][j+1]=dp[i][j]+money[i];
}
if(i-1>=0&&dp[i-1][j+1]<dp[i][j]+money[i-1]-m[j]){
dp[i-1][j+1]=dp[i][j]+money[i-1]-m[j];
}
if(i+1<3&&dp[i+1][j+1]<dp[i][j]+money[i+1]-m[j]){
dp[i+1][j+1]=dp[i][j]+money[i+1]-m[j];
}
}
}
return Math.max(Math.max(dp[0][n-1],dp[1][n-1]),dp[2][n-1]);
}
}