博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode-63-Unique Paths II
阅读量:7053 次
发布时间:2019-06-28

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

算法描述:

A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).

The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).

Now consider if some obstacles are added to the grids. How many unique paths would there be?

An obstacle and empty space is marked as 1 and 0 respectively in the grid.

Note: m and n will be at most 100.

Example 1:

Input:[  [0,0,0],  [0,1,0],  [0,0,0]]Output: 2Explanation:There is one obstacle in the middle of the 3x3 grid above.There are two ways to reach the bottom-right corner:1. Right -> Right -> Down -> Down2. Down -> Down -> Right -> Right

解题思路:这道题和Unique Paths 解法类似,只不过多了一个障碍判断。需要重点关注的是初始化阶段也要进行判断,最上边一行和最左边一列中有障碍,则障碍后面的都置为0;

int uniquePathsWithObstacles(vector
>& obstacleGrid) { int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); vector
> dp(m,vector
(n,0)); for(int i=0; i < m; i++){ if(obstacleGrid[i][0] == 1) break; dp[i][0]=1; } for(int j=0; j < n; j++){ if(obstacleGrid[0][j] == 1) break; 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]; }

 

转载于:https://www.cnblogs.com/nobodywang/p/10339383.html

你可能感兴趣的文章
ESXI 主机开启mob
查看>>
Linux USB 驱动开发(一)—— USB设备基础概念
查看>>
关于乱码问题的机理分析
查看>>
[译] 可工作软件的重要性
查看>>
Git :本地仓库提交到远程服务器
查看>>
Android开发在路上:少去踩坑,多走捷径【转】
查看>>
动态代理模式
查看>>
将博客搬至CSDN
查看>>
JQuery 修改 form 表单的 action 的值,并提交
查看>>
IOS 百度地图导入最新 SDK 2.9 报错
查看>>
Spark快速入门指南
查看>>
MySql用navcat连接时报错 2509
查看>>
android 显示 网络图片
查看>>
安装MySQLdb模块-python
查看>>
ubuntu快捷键
查看>>
IOS——生成智能调试输出
查看>>
杀毒软件Avast被曝严重的0day漏洞
查看>>
NDK Caused by: java.lang.UnsatisfiedLinkError:
查看>>
oracle timestamp相减
查看>>
【swing】 BoxLayout布局
查看>>