美文网首页
剑指 offer 学习之年终奖

剑指 offer 学习之年终奖

作者: Kevin_小飞象 | 来源:发表于2020-03-26 09:07 被阅读0次

题目描述

链接:牛客网

小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6 * 6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。

给定一个6 * 6的矩阵 board,其中每个元素为对应格子的礼物价值,左上角为[0,0],请返回能获得的最大价值,保证每个礼物价值大于100小于1000。

解题思路

应该用动态规划求解,而不是深度优先搜索,深度优先搜索过于复杂,不是最优解。

public class Main {
    
    public static void main(String[] args) {
        int[][] nums = {
            {1, 10, 3, 8},
            {12, 2, 9, 6},
            {5, 7, 4, 11},
            {3, 7, 16, 5},
        };
        System.out.println(getMost(nums));   //礼物的最大价值为 1+12+5+7+7+16+5=53。
    }
    
    public static int getMost(int[][] values) {
        if (values == null || values.length == 0 || values[0].length == 0) {
            return 0;
        }
        int n = values[0].length;
        int[] dp = new int[n];
        for (int[] value : values) {
            dp[0] += value[0];
            for (int i = 1; i < n; i++) {
                dp[i] = Math.max(dp[i], dp[i - 1]) + value[i];
            }
            
        }
        return dp[n - 1];
    }
}

测试结果

image.png

相关文章

  • 剑指 offer 学习之年终奖

    题目描述 链接:牛客网 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在...

  • 单例模式

    单例模式 最近在看《剑指offer》,根据《剑指offer》的讲解,结合《effectiveJava》简单学习了一...

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指 offer 学习之解码方法

    题目描述 一条包含字母 A-Z 的消息通过以下方式进行了编码: 给定一个只包含数字的非空字符串,请计算解码方法的总...

  • 剑指 offer 学习之剪绳子

    题目描述 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子...

  • 剑指offer 和 leetcode题目

    剑指offer leetcode

  • 剑指Offer学习笔记

    面试题1:赋值运算符函数 如下为CMyString的声明,请为该类添加赋值运算符函数。 class CMyStri...

  • 年龄排序

    摘抄资料:《剑指offer》

  • 剑指offer之(树)

    树 写这个文章的目的是为了记录,好背。 树的遍历和树的深度是基础,很多题都是在遍历的基础上加些限制条件,下边题目的...

  • Hello Offer

    这个文集记录我在看《剑指 offer》第二版的学习笔记。

网友评论

      本文标题:剑指 offer 学习之年终奖

      本文链接:https://www.haomeiwen.com/subject/zatxuhtx.html