博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode]Minimum Path Sum
阅读量:5071 次
发布时间:2019-06-12

本文共 1614 字,大约阅读时间需要 5 分钟。

问题描写叙述:

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

Note: You can only move either down or right at any point in time.

基本思路:

此题能够用动态规划算法解决。

到达grid[i][j]仅仅有两种方式。从grid[i-1][j]向右移动或grid[i][j-1]向下移动。

(PS:i >1 , j>1);

至于i = 1 和 j = 1 的情形仅仅有一种方法能够到达,能够提前算好初始化。

然后利用上面的两种途径找最短的作为到达grid[i][j]的最短路径。

代码:

int minPathSum(vector
> &grid) { //C++ int rows = grid.size(); if(rows == 0) return 0; int cols = grid[0].size(); int upLine = 0; for(int i = 0; i < cols; i++) upLine += grid[0][i]; for(int i = 1; i< rows; i++) upLine += grid[i][cols-1]; //init vector
> record ; for(int i = 0; i< rows; i++) { vector
tmp(cols,upLine); record.push_back(tmp); } int tmp = 0; for(int i = 0; i < cols; i++) { record[0][i] = tmp+grid[0][i]; tmp = record[0][i]; } tmp = 0; for(int j = 0; j < rows; j++) { record[j][0] =tmp + grid[j][0]; tmp = record[j][0]; } for(int i = 1; i < rows; i++) for(int j = 1; j < cols; j++) record[i][j] = grid[i][j] + ((record[i][j-1] < record[i-1][j])?record[i][j-1]:record[i-1][j]); return record[rows-1][cols-1]; }

转载于:https://www.cnblogs.com/liguangsunls/p/7211188.html

你可能感兴趣的文章
[数据库]关于三个比较典型的数据库试题(1.找到员工表中工资最高的前三名;2.找到员工表中薪水大于本部门平均薪水的员工;3.统计每年入职的员工个数)...
查看>>
iOS-数据解析XML解析的多种平台介绍
查看>>
自考心得
查看>>
基于PaaS人事部门间平台多重身份的技术解决方案
查看>>
写的好帮手项目官员 - Evernote 5.4(Evernote的) 中国绿色版
查看>>
java多线程(同步和死锁,生产者和消费者问题)
查看>>
STL algorithmi算法s_sorted和is_sorted_until(28)
查看>>
445port入侵具体解释
查看>>
华为面试题算什么,这个背会了外企随便进
查看>>
解决mysql控制台查询数据乱码的问题,有图有真相
查看>>
Oracle建立表空间和用户
查看>>
八字案例董易奇
查看>>
iframe父子页面通信
查看>>
ambari 大数据安装利器
查看>>
java 上传图片压缩图片
查看>>
magento 自定义订单前缀或订单起始编号
查看>>
ACM_拼接数字
查看>>
计算机基础作业1
查看>>
Ubuntu 深度炼丹环境配置
查看>>
C#中集合ArrayList与Hashtable的使用
查看>>