当前位置: 首页> 房产> 建筑 > 网站建设模板平台_镇江网页设计培训_电商培训课程_整站优化系统

网站建设模板平台_镇江网页设计培训_电商培训课程_整站优化系统

时间:2025/7/9 6:28:26来源:https://blog.csdn.net/qq_73823477/article/details/144299754 浏览次数:0次
网站建设模板平台_镇江网页设计培训_电商培训课程_整站优化系统

62.不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?
题目链接

个人题解

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>> dp;dp.resize(m);for(int i=0;i<m;i++)dp[i].resize(n);for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(i==0||j==0)dp[i][j]=1;elsedp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m-1][n-1];}
};

复杂度分析

  • 时间复杂度:M*N
  • 空间复杂度:M*N

解题思路

二维dp经典题目,每到一格的路径都等于其上一个路径数和左一格路径数的和

63.不同路径II

给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。

网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的移动路径中不能包含 任何 有障碍物的方格。

返回机器人能够到达右下角的不同路径数量。

测试用例保证答案小于等于 2 * 109。
题目链接

个人题解

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {vector<vector<int>> dp;dp.resize(obstacleGrid.size());for(int i=0;i<obstacleGrid.size();i++)dp[i].resize(obstacleGrid[0].size());int m=obstacleGrid.size();int n=obstacleGrid[0].size();int bflag=0;for(int i=0;i<n;i++){if(obstacleGrid[0][i])bflag=1;if(bflag)dp[0][i]=0;elsedp[0][i]=1;}bflag=0;for(int i=0;i<m;i++){if(obstacleGrid[i][0])bflag=1;if(bflag)dp[i][0]=0;elsedp[i][0]=1;}for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(obstacleGrid[i][j])dp[i][j]=0;elsedp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m-1][n-1];}
};
//官解,我处理的有点复杂了
class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) //如果在起点或终点出现了障碍,直接返回0return 0;vector<vector<int>> dp(m, vector<int>(n, 0));for (int i = 0; i < m && obstacleGrid[i][0] == 0; i++) dp[i][0] = 1;for (int j = 0; j < n && obstacleGrid[0][j] == 0; j++) dp[0][j] = 1;for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {if (obstacleGrid[i][j] == 1) continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m - 1][n - 1];}
};

复杂度分析

  • 时间复杂度:M*N
  • 空间复杂度:M*N

解题思路

同上一道,不过遇到障碍把方法数置0即可

今日总结

早点休息吧,最近好多事,这学期算法课又步骤了实验,感觉自己认真自己做一次实验得两三天,有些人半小时就搞定了,唉,无穷尽噫。

关键字:网站建设模板平台_镇江网页设计培训_电商培训课程_整站优化系统

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: