变相

变向

http://www.nowcoder.com/questionTerminal/85efab854e60499daa524ca943b72d35

import java.util.*;


public class Solution {
    public int solve(int n, int[] a1, int[] a2, int[] a3, int[] m) {

        if (n <= 0) return 0;

        int[][] data = new int[3][];
        data[0] = a1;
        data[1] = a2;
        data[2] = a3;

        int dp[][] = new int[3][n];
        dp[0][0] = a1[0];
        dp[1][0] = a2[0];
        dp[2][0] = a3[0];

        for (int col = 1; col < n; ++col) {
            dp[0][col] = Math.max(dp[0][col - 1],
                    dp[1][col - 1] - m[col - 1]) + data[0][col];

            dp[1][col] = Math.max(dp[1][col - 1],
                    Math.max(dp[0][col - 1] - m[col - 1],
                            dp[2][col - 1] - m[col - 1])) + data[1][col];

            dp[2][col] = Math.max(dp[2][col - 1],
                    dp[1][col - 1] - m[col - 1]) + data[2][col];
        }
        return Math.max(dp[0][n - 1], Math.max(dp[1][n - 1], dp[2][n - 1]));

    }
}
全部评论

相关推荐

把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务