zoukankan      html  css  js  c++  java
  • [编程题] nk: [矩阵的最小路径和]

    [编程题] nk: 矩阵的最小路径和

    题目

    image-20200728114243102

    输入输出

    image-20200728114417130

    image-20200728114437888

    Java代码(动态规划)

    import java.util.Scanner;
    public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = sc.nextInt();
            int[][] arr = new int[n][m];
            for(int i=0;i<n;i++){
                for(int j = 0;j<m;j++){
                    arr[i][j] = sc.nextInt();
                }
            }
            System.out.println(step(arr));
        }
    
        public static int step(int[][] arr){
            //保存结果的dp
            int[][] dp = new int[arr.length][arr[0].length];
            dp[0][0] = arr[0][0];  //存储左上角节点
    
            //存储第1列的值(第一列的值每个元素要想要得到最小值只能是该元素的左边和上边的元素和,左边越界了,只能是上边的)
            for(int i=1;i<arr.length;i++){
                dp[i][0] = dp[i-1][0] + arr[i][0];   //该元素的上一个元素加上这个元素的和存储dp该元素位置
            }
    
            //存储第1行的值(原理如上)
            for(int i=1;i<arr[0].length;i++){
                dp[0][i] = dp[0][i-1]+arr[0][i];
            }
    
            //存储其他结果到dp中
            for(int i=1;i<arr.length;i++){
                for(int j=1;j<arr[i].length;j++){
                    dp[i][j] = Math.min(dp[i-1][j],dp[i][j-1]) + arr[i][j];
                }
            }
            //返回值
            return dp[dp.length-1][dp[0].length-1];
        }
    }
    
  • 相关阅读:
    centos7安装mysql5.7
    Day1:基于ECS搭建FTP服务
    sql多表语句
    SSM多表查询
    ssm中使用逆向工程
    用maven对ssm进行整合
    Maven设置本地仓和阿里云远程仓
    解决maven项目中web.xml is missing and <failOnMissingWebXml> is set to true
    SSM登陆
    理解ConcurrentMap
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13390275.html
Copyright © 2011-2022 走看看