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

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

思路:
  • dfs,超时
class Solution {public:    int uniquePathsWithObstacles(vector
>& obstacleGrid) { int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); return dfs(obstacleGrid,m,n,0,0); } int dfs(vector
>& obstacleGrid,int m,int n,int curi,int curj){ if(curi > m-1 || curj > n-1) return 0; if(obstacleGrid[curi][curj] == 1) return 0; else{ if(curi == m-1 && curj == n-1) return 1; return dfs(obstacleGrid,m,n,curi+1,curj) + dfs(obstacleGrid,m,n,curi,curj+1); } }};
  • DP。
class Solution {public:    int uniquePathsWithObstacles(vector
>& obstacleGrid) { int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); vector
>dp(m,vector
(n,0)); if(obstacleGrid[0][0] == 1 || obstacleGrid[m-1][n-1] == 1) return 0; dp[0][0] = 1; for(int i = 1; i < n; i++){ if(obstacleGrid[0][i] == 1) dp[0][i] = 0; else{ dp[0][i] = dp[0][i-1]; } } for(int i = 1; i < m; i++){ if(obstacleGrid[i][0] == 1) dp[i][0] = 0; else{ dp[i][0] = dp[i-1][0]; } } for(int i = 1; i < m; i++){ for(int j = 1; j < n; j++){ if(obstacleGrid[i][j] == 1) dp[i][j] = 0; else dp[i][j] = dp[i-1][j] + dp[i][j-1]; } } return dp[m-1][n-1]; }};

转载于:https://www.cnblogs.com/UniMilky/p/6978730.html

你可能感兴趣的文章
数据库常用函数详解
查看>>
jquery 监听不起效果的小问题汇总
查看>>
eclipse构建及运行maven web项目
查看>>
Photoshop 图文并茂常用快捷键
查看>>
linux基础命令2(ls,cd)
查看>>
面向对象初识
查看>>
Word 2010中查找和替换功能高级技巧(转)
查看>>
优先队列
查看>>
一起学wp7 XNA游戏开发
查看>>
堆内存破坏检测实战--附完整调试过程
查看>>
【knockoutjs】 Computed VS Pure Computed 区别
查看>>
JS向数组中添加/删除元素
查看>>
House Robber
查看>>
Best Time to Buy and Sell Stock II
查看>>
函数参数按值传递
查看>>
前端微应用:前端大应用拆分为多个小应用(?前端 nginx?)
查看>>
Codeforces Round #574 (Div. 2)
查看>>
洛谷上传数据指南
查看>>
搜索进阶课件,视频,代码(状态压缩搜索,折半搜索,dfs,bfs总结)
查看>>
第一类和第二类Stirling数
查看>>