[LeedCode OJ]#63 Unique Paths II
2015-08-24 13:11
513 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:https://leetcode.com/problems/unique-paths-ii/
题意:
给定一个二维矩阵,其中0代表这个位置可以走,1代表这个位置不能走,还是从(1,1)走到(n,m),问有多少种走法
思路:
dp[i][j]代表走到(i,j)有多少种走法
由于(i,j)只能从(i-1,j)与(i,j-1)走到,所以状态转移方程为:
dp[i][j]=dp[i-1][j]+dp[i][j-1];
特定的,对于此格为1的情况,因为这一个走不到,所以此时dp[i][j]=0
题目链接:https://leetcode.com/problems/unique-paths-ii/
题意:
给定一个二维矩阵,其中0代表这个位置可以走,1代表这个位置不能走,还是从(1,1)走到(n,m),问有多少种走法
思路:
dp[i][j]代表走到(i,j)有多少种走法
由于(i,j)只能从(i-1,j)与(i,j-1)走到,所以状态转移方程为:
dp[i][j]=dp[i-1][j]+dp[i][j-1];
特定的,对于此格为1的情况,因为这一个走不到,所以此时dp[i][j]=0
class Solution { public: int uniquePathsWithObstacles(vector<vector<int> >& a) { int i,j; int n = a.size(),m = a[0].size(); vector<vector<int> > dp; dp.resize(n+1); for(i = 0; i<=n; i++) dp[i].resize(m+1); dp[0][0] = !a[0][0]; for(i = 0; i<n; i++) { for(j = 0; j<m; j++) { if(i==0&&j==0) continue; if(a[i][j]==1) { dp[i][j] = 0; continue; } if(i == 0) { dp[i][j]=dp[i][j-1]; continue; } if(j == 0) { dp[i][j]=dp[i-1][j]; continue; } dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } return dp[n-1][m-1]; } };
相关文章推荐
- UESTC-594 我要长高(动态规划+单调队列优化)
- [LeedCode OJ]#62 Unique Paths
- Code Forces 313B Ilya and Queries
- HDU1159Common Subsequence(dp)
- iOS UITableView单元格单击出现延迟,双击正常执行事件问题
- FragmentTabHost切换Fragment时避免UI重新加载
- 关于UIScrollView的alwaysBounceVertical属性
- A1099. Build A Binary Search Tree (30)
- 基于MVC4+EasyUI的Web开发框架经验总结(4)--使用图表控件Highcharts
- android 系统属性 build.prop
- 串口下载uboot和uImage
- HDU 4667 Building Fence(求凸包的周长)
- Unknown Class **** in Interface Builder file
- NSIS un.onGUIInit 重复定义解决
- UIImageView 的contentMode属性
- <c:if test="value ne, eq, lt, gt,...."> 用法
- easyui 中 OnClickRow 的使用案例
- 将DataTable转换成EasyUITree的json格式 ---四级树
- MockupBuilder
- android UI之ScaleAnimation解析