zoukankan      html  css  js  c++  java
  • 矩阵最小路径和练习题

    题目:有一个矩阵map,它每个格子有一个权值。从左上角的格子开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。给定一个矩阵map及它的行数n和列数m,请返回最小路径和。保证行列数均小于等于100.

    思路:典型dp,比较简单,用有一个二维表记录到达每个格子的最小路径,对于第一行和第一列,到达每个格子只可能从一个方向,所以先求第一行,第一列,之后由特殊到一般,对于其他任意的dp[i][j]来说,只有可能从两个方向来的,上或者左,选较小的那个。然后从左到右,从上到下依次求每个格子,最右下角即为所求

      public int getMin(int[][] map, int n, int m) {
            int[][] dp=new int[n][m];
            dp[0][0]=map[0][0];
          //第一列
            for(int i=1;i<n;i++){
                dp[i][0]=map[i][0]+dp[i-1][0];
            }
        //第一行
    for(int i=1;i<m;i++){ dp[0][i]=map[0][i]+dp[0][i-1]; } for(int i=1;i<n;i++){ for(int j=1;j<m;j++){ dp[i][j]=map[i][j]+Math.min(dp[i][j-1],dp[i-1][j]); } } return dp[n-1][m-1]; }
  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/team42/p/6732961.html
Copyright © 2011-2022 走看看