给定一个充满非负数的网格,找到从左上到右下的路径,最小化沿其路径的所有数字的总和。只能向下或向右移动。
来源:互联网 发布:linux切换到Sql命令 编辑:程序博客网 时间:2024/06/04 18:59
本题源自LeetCode
--------------------------------------------------------------------
思路 动态规划
1 如果 i=0并且 j!=0 则下一步只能向右走。
2 否则j=0且i!=0 则只能下走。
3 如果 i 和 j 都不等于0 则 选择向下 和向右 最小的那个。
int minPathSum(vector<vector<int> > &grid) { int rows=grid.size(); int cols=0; if(rows!=0){ cols=grid[0].size(); } if(rows==0||cols==0) return 0; for(int i=0;i<rows;i++){ for(int j=0;j<cols;j++){ if(i==0&&j!=0){ grid[i][j] += grid[i][j-1]; } if(i!=0&&j==0){ grid[i][j] += grid[i-1][j]; } if(i*j!=0){ grid[i][j]=min(grid[i-1][j],grid[i][j-1]); } } } return grid[rows-1][cols-1]; }
2 延伸 路径跟踪问题。矩阵中只有 0 和 1 则如果为1 ,就不能通过。只能向下和向右移动
int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { int rows=obstacleGrid.size(); int cols=0; if(rows!=0){ cols=obstacleGrid[0].size(); } if(rows==0||cols==0) return 0; vector<vector<int>> dp(rows,vector<int>(cols,0)); dp[0][0]=1-obstacleGrid[0][0]; ///初始化为 障碍书相反的值 for(int i=0;i<rows;i++){ for(int j=0;j<cols;j++){ if(obstacleGrid[i][j]==0){ if(i==0&&j!=0){ dp[i][j]+=dp[i][j-1]; } if(i!=0&&j==0){ dp[i][j]+=dp[i-1][j]; } if(i!=0&&j!=0){ dp[i][j]+=dp[i][j-1]+dp[i-1][j]; } } } } return dp[rows-1][cols-1]; }
阅读全文
0 0
- 给定一个充满非负数的网格,找到从左上到右下的路径,最小化沿其路径的所有数字的总和。只能向下或向右移动。
- 给定一个填充非负数的m×n网格,找到一条从左上到右下的路径,这个路径将所有数字的总和最小化。
- 有一个X*Y的网格,只能向右、向下移动,从(0, 0)走到(X-1, Y-1),中间某些位置有障碍物,打印一条路径(
- 有一个X*Y的网格,只能向右、向下移动,从(0, 0)走到(X-1, Y-1),中间某些位置有障碍物,打印所有可能的路径
- 输入一个5乘5的矩阵,输出从左上到右下的路径
- 关于n*m网格从左上到右下的走法数
- 有一个X*Y的网格,只能向右、向下移动,从(0, 0)走到(X-1, Y-1),中间某些位置有障碍物,打印一条路径(优化)
- 经典问题:对于一个m*n的网格,从左上角的方格到右下角的方格,共有多少条路径(只允许向右和向下)
- Project Euler15 给定一个20*20的方格,从左上角到右下角的路径有多少条?(只允许向右和向下走)
- Minimum Path Sum 求方格总从左上到右下的最短路径 简单动态规划
- 给定一个三角形,从顶部到底部找到最小路径和。 每个步骤,您可以移动到下面的行上的相邻数字。
- 只能向右向下移动的迷宫
- Recursion 二维空间里机器人向右或向下走的所有路径问题 @CareerCup
- 节点数值总和等于某个给定值的所有路径
- c++,二维数组中的数值代表金币数,从左上角出发,只能向下或者向右移动,判断是否存在获取指定金币数值N的路径
- 给定一个M*N的格子或棋盘,从左下角走到右上角的走法总数(每次只能向右或向上移动一个方格边长的距离)
- 给你一个二叉树,其中每个节点都包含一个整数值。查找总和给定值的路径数,路径不需要在根或叶子处开始或结束,但必须向下
- m*n的方格,从左下角走到右上角,只能向右和向上,总共的路径
- js div拖动动画运行轨迹效果
- 对角色的移动的整理
- 常见的三种表连接
- 数据库连接测试工具
- 协程-greenlet版(python 版)
- 给定一个充满非负数的网格,找到从左上到右下的路径,最小化沿其路径的所有数字的总和。只能向下或向右移动。
- 八-4 模拟和测试其他浏览器
- 35年编程史沉淀下来的8条宝贵经验
- conda命令使用
- MySQL5.7.20安装
- MonkeyRunner环境搭建图解
- Apache Httpd 2.2 配置全解析(CentOS6)
- PHP监控网站运行状态
- matlab 画图函数plot