题目描述

众所周知,牛妹有很多很多粉丝,粉丝送了很多很多礼物给牛妹,牛妹的礼物摆满了地板。地板是N\times MN×M的格子,每个格子有且只有一个礼物,牛妹已知每个礼物的体积。地板的坐标是左上角(1,1)  右下角(N, M)。牛妹只想要从屋子左上角走到右下角,每次走一步,每步只能向下走一步或者向右走一步或者向右下走一步每次走过一个格子,拿起(并且必须拿上)这个格子上的礼物。牛妹想知道,她能走到最后拿起的所有礼物体积最小和是多少?

示例1

输入: [[1,2,3],[2,3,4]]

输出:7


思路:图示


     1       2         3          4
     3       2         4          2
     2      4        7                  6
   i-1, j-1     i-1,j  
    i  , j-1      i,j  
       

主要是用来填表。首先可以确定最上边一行,最左边一列,然后i,j主要与左上,上,左三个有关,通过比较进行填充。


代码:

import java.util.*;
public class Solution {
    /**
     * 
     * @param presentVolumn int整型二维数组 N*M的矩阵,每个元素是这个地板砖上的礼物体积
     * @return int整型
     */
    public int selectPresent (int[][] presentVolumn) {
        // write code here
        if(presentVolumn == null || presentVolumn.length < 1 || presentVolumn[0].length < 1)
            return 0;
        int m= presentVolumn.length;
        int n= presentVolumn[0].length;
        int[][] b = new int[m][n];
         b[0][0]=presentVolumn[0][0];
        for (int i=1;i<n;i++){
           b[0][i] =b[0][i-1]+presentVolumn[0][i];
        } //行填写
        for(int i=1;i<m;i++){
            b[i][0] = b[i-1][0]+presentVolumn[i][0];
        } //列填写

for(int j=1;j<n;j++){
            for (int i=1;i<m;i++){
                b[i][j]=min(b[i-1][j],b[i][j-1],b[i-1][j-1]) + presentVolumn[i][j];
            }
        }
        return b[m-1][n-1];
    }
    public int min(int a, int b,int c) {
        int t = a;
        if(a>b){
            t=b;
        }
        if(t>c){
            t=c;
        }
        return t;
    }
}

牛客网—编程题(1)牛牛的礼物相关推荐

  1. Python 牛客网编程题输入用例问题

    Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...

  2. 牛客网编程题python_牛客网数据结构练习题

    第一次使用牛客做编程题,刚开始不了解如何输入输出,查了查才知道.我用的是语言是 Javascript v8 6.0.0 readline() 表示得到输入的字符串,如果是多行的话,每readline一 ...

  3. python牛客网编程题_一波优秀的自学编程语言网站

    网课已经开设两三个月了 同学们上网课的效果怎么样呢? 特别是学编程的同学 没有了学校的学习氛围 没有了老师面对面教学指导 你是否为了编程而焦头烂额,生无可恋呢? 没事,现在同学们的福利来啦! 下面是给 ...

  4. python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

    作者:JessyTsui https://www.nowcoder.com/discuss/580721?type=2&order=0&pos=15&page=1&ch ...

  5. 牛客网编程题——合唱团(网易2017)

    这题在编程达人面前应该算是水题,但这算是我第一个做出来的动态规划程序,作为纪念,分享一下.题目链接: https://www.nowcoder.com/practice/661c49118ca2419 ...

  6. 牛客网编程题python输入输出_牛客网算法题目记录

    车站建设问题 有10^8个村庄排在一条公路上,依次编号为0~10^8-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0. 现在需要建设车站 ...

  7. 牛客网 [编程题]数字和为sum的方法数

    题目描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行 ...

  8. 牛客网 [编程题]餐馆

    题目描述: 某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数: 有m批客人,每批客人有两个参数:b人数,c预计消费金额. 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消 ...

  9. 牛客网编程题07--提取不重复的整数

    题目 代码: // ExtractNum.cpp : 定义控制台应用程序的入口点. // 从右到左 提取一个不重复的整数 // 提取,string转int,int转string#include &qu ...

最新文章

  1. 硬改TP-Link WR841N v8刷breed和OpenWrt
  2. 结对编程项目作业-设计文档
  3. cuda10安装_Win10安装GPU版本的Tensorflow 2.1
  4. 【GVA】gin gorm多对多many2many更新数据时级联更新关联表数据的正确写法
  5. HDU1007 Quoit Design 分治+递归
  6. Spring Quartz的原理
  7. url带多个参数_动态URL和静态URL做seo优化不必二选一
  8. 服务器说你注册过多,为什么我的世界服务器说此用户名已被注册我都换了很多用户了都没用 爱问知识人...
  9. JAVA Swing GUI设计 WindowBuilder Pro Container使用大全4——JSplitPane使用
  10. 服务器c盘临时文件在哪里,excel在c盘哪个文件夹|excel临时文件位置
  11. 谷歌浏览器清除指定网站cookie和缓存方法步骤
  12. HTML5期末大作业:个人网页设计——作家三毛6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计
  13. 幼儿园计算机和网络安全情况,幼儿园网络安全自查报告
  14. 写好英语科技论文的诀窍: 主动迎合读者期望,预先回答专家可能质疑--周耀旗教授...
  15. C语言如何求最大值和最小值
  16. TabTransformer:用于表格数据的Transformer
  17. “财界奥斯卡”CGMA全球管理会计中国大奖榜单公布
  18. 阿里P8架构师20年经验总结成微服务设计企业架构转型之道笔记
  19. html如何加载cad文件夹,CAD如何加载lsp,CAD自动加载lsp
  20. 联想win10 开启 intel vt-x

热门文章

  1. 微信git删除项目的做法
  2. 南有万峰,北有李大夫
  3. Haproxy学习总结
  4. 操作系统进程的软中断通信
  5. OKhttp Rejecting re-init on previously-failed class Failed resolution of: Lorg/conscrypt/Conscrypt
  6. matlab如何进对图像进行透视变换,如何根据已知的内在和外在参数在Matlab中进行透视校正?...
  7. 中电金信:数字化转型|银行业数据中心数字化转型之驱动篇
  8. jQuery $.each用法
  9. Macfee打造自己的安全系统
  10. BCGControlBar Pro MFC用户界面控件常见问题大全