zoukankan      html  css  js  c++  java
  • 刷题64. Minimum Path Sum

    一、题目说明

    题目64. Minimum Path Sum,给一个m*n矩阵,每个元素的值非负,计算从左上角到右下角的最小路径和。难度是Medium!

    二、我的解答

    乍一看,这个是计算最短路径的,迪杰斯特拉或者弗洛伊德算法都可以。不用这么复杂,同上一个题目一样:

    刷题62. Unique Paths()

    不多啰嗦,直接代码,注释中有原理:

    #include<iostream>
    #include<vector>
    using namespace std;
    class Solution{
    	public:
    		int minPathSum(vector<vector<int>>& grid){
    			int m = grid.size();
    			if(m<1){
    				return 0;
    			}
    			
    			int n = grid[0].size();
    			vector<vector<int>> dp(m,vector<int>(n,0));
    			
    			dp[0][0] = grid[0][0];
    			//初始化第1行
    			for(int i=1;i<n;i++){
    				dp[0][i] = dp[0][i-1]+grid[0][i]; 
    			}
    			//初始化第1列 
    			for(int i=1;i<m;i++){
    				dp[i][0] = dp[i-1][0]+grid[i][0]; 
    			}
    			
    			for(int i=1;i<n;i++){//计算第i列 
    				for(int j=1;j<m;j++){//计算第j行 
    					if(dp[j-1][i]>dp[j][i-1]){
    						dp[j][i] = dp[j][i-1]+grid[j][i];
    					}else{
    						dp[j][i] = dp[j-1][i]+grid[j][i];
    					}
    					 
    				}
    			}
    			
    			return dp[m-1][n-1];
    		}
    };
    int main(){
    	Solution s;
    	vector<vector<int>> grid;
    	
    	grid = {{1,3,1},{1,5,1},{4,2,1}};	
    	cout<<"7=="<<s.minPathSum(grid)<<"
    ";
    	
    	grid = {{0,1},{1,0}};	
    	cout<<"1=="<<s.minPathSum(grid)<<"
    ";
    	
    	grid = {{1,2,5},{3,2,1}};	
    	cout<<"6=="<<s.minPathSum(grid)<<"
    ";
    	
    	return 0;
    }
    

    性能,第一次提交16ms,一行代码没修改再次提交12ms:

    Runtime: 12 ms, faster than 49.38% of C++ online submissions for Minimum Path Sum.
    Memory Usage: 10.9 MB, less than 50.00% of C++ online submissions for Minimum Path Sum.
    

    三、优化措施

    本来想用迪杰斯特拉算法写的,也不废这个劲了。

    所有文章,坚持原创。如有转载,敬请标注出处。
  • 相关阅读:
    Shell 06 awk
    Shell 05 Sed
    Shell 04 字符串处理、正则表达式
    Shell 03 for while case 函数 中断及退出
    Shell 02 数据运算/条件测试
    Shell 01 shell概述
    六十.完全分布式 、 节点管理 、 NFS网关
    五十九.大数据、Hadoop 、 Hadoop安装与配置 、 HDFS
    五十八.Kibana使用 、 Logstash配置扩展插件
    bzoj4872
  • 原文地址:https://www.cnblogs.com/siweihz/p/12249060.html
Copyright © 2011-2022 走看看