美团数开3月25日笔试第五题:二维 dp

import java.util.*;

public class P5 {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt(), k = cin.nextInt();
        int[] nums = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            nums[i] = cin.nextInt();
        }

        int[][] dp = new int[n + 1][k + 1];
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j <= k; j++) {
                if (i == 1) {
                    dp[i][j] = nums[i];
                } else if (j == 0) {
                    dp[i][j] = Math.max(dp[i - 1][j], nums[i] + dp[i - 2][j]);
                } else {
                    dp[i][j] = Math.max(dp[i - 1][j], nums[i] + Math.max(dp[i - 1][j - 1], dp[i - 2][j]));
                }
            }
        }
        System.out.println(dp[n][k]);
    }
}

#我的实习求职记录#
全部评论
面过了吗,能分享题目和答案吗
点赞 回复 分享
发布于 2023-03-29 15:10 湖南
老哥,能问一下为什么i==1时,要令dp[i][j]=vals[i-1];这个呢,我发现在给的test case下,去掉这个分支也还是对的
点赞 回复 分享
发布于 2023-03-27 09:34 美国
苦晕 acm模式不熟悉 大佬怎么熟悉这玩意
点赞 回复 分享
发布于 2023-03-26 08:48 浙江

相关推荐

03-31 21:47
东南大学 C++
彭于晏前来求offe...:吓晕了
点赞 评论 收藏
分享
评论
5
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务