[leetcode] Unique Paths II
来源:互联网 发布:淘宝2楼 一千零一夜 编辑:程序博客网 时间:2024/05/16 09:59
Unique Paths II
思路:
当前位置为1,走法为0;当前位置为0,走法=当前位置的上边位置的走法+当前位置的左边位置的走法
注意边界的处理
class Solution {public: int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { int row =obstacleGrid.size();//获取行数 if (row==0) { return 0; } int column=obstacleGrid[0].size();//获取列数 vector<vector<int>> fun(row,vector<int>(column));//开辟相同大小的矩阵,并初始化为0 int i,j; for (i=0; i<row; ++i) { for (j=0; j<column; ++j) { fun[i][j]=0; } } //特殊位置处理 fun[0][0]=(obstacleGrid[0][0]==1?0:1);//fun[0][0] for (i=1; i<row; ++i) {//第一列,注意i从1开始 fun[i][0]=(obstacleGrid[i][0]==1?0:fun[i-1][0]); } for (j=1; j<column; ++j) {//第一行 fun[0][j]=(obstacleGrid[0][j]==1?0:fun[0][j-1]); } //从fun[1][1]开始处理 for (i=1; i<row; ++i) { for (j=1; j<column; ++j) { fun[i][j]=(obstacleGrid[i][j]==1?0:(fun[i-1][j]+fun[i][j-1])); } } return fun[row-1][column-1]; }};
参考:leetcode unique path II
class Solution {public: int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { vector<vector<int>> fun(obstacleGrid.size(),vector<int>(obstacleGrid[0].size())); fun[0][0]=(obstacleGrid[0][0]==1?0:1); for (int i=1; i<obstacleGrid.size(); ++i) { fun[i][0]=(obstacleGrid[i][0]==1?0:fun[i-1][0]); } for (int j=1; j<obstacleGrid[0].size();++j) { fun[0][j]=(obstacleGrid[0][j]==1?0:fun[0][j-1]); } for (int i=1;i<obstacleGrid.size(); ++i) { for (int j=1; j<obstacleGrid[0].size();++j) { fun[i][j]=(obstacleGrid[i][j]==1?0:(fun[i-1][j]+fun[i][j-1])); } } return fun[obstacleGrid.size()-1][obstacleGrid[0].size()-1]; }};
class Solution {public: //状态定义为从起点--当前节点的走法 int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { if(obstacleGrid.size()==0){ return 0; } int sum[obstacleGrid.size()][obstacleGrid[0].size()]; //状态初始化 sum[0][0]=(obstacleGrid[0][0]==0?1:0); for(int i=1;i<obstacleGrid.size();++i){ sum[i][0]=(obstacleGrid[i][0]==1?0:sum[i-1][0]); } for(int j=1;j<obstacleGrid[0].size();++j){ sum[0][j]=(obstacleGrid[0][j]==1?0:sum[0][j-1]); } //状态转移 for(int i=1;i<obstacleGrid.size();++i){ for(int j=1;j<obstacleGrid[0].size();++j){ sum[i][j]=(obstacleGrid[i][j]==1?0:(sum[i-1][j]+sum[i][j-1])); } } return sum[obstacleGrid.size()-1][obstacleGrid[0].size()-1]; }};
0 0
- LeetCode: Unique Paths II
- [Leetcode] Unique Paths II
- LeetCode : Unique Paths II
- [LeetCode] Unique Paths II
- [LeetCode]Unique Paths II
- [leetcode]Unique Paths II
- LeetCode-Unique Paths II
- [leetcode] Unique Paths II
- LeetCode - Unique Paths II
- LeetCode:Unique Paths II
- 【LeetCode】Unique Paths II
- leetcode Unique Paths II
- LeetCode Unique Paths II
- LeetCode | Unique Paths II
- Leetcode: Unique Paths II
- LeetCode Unique Paths II
- Unique Paths II -- LeetCode
- [LeetCode] Unique Paths II
- MYSQL自动备份策略的选择
- C语言字节对齐 内存管理
- 【J2EE性能分析篇】JVM参数对J2EE性能优化的影响
- JProfiler 使用说明
- Maven 安装Jar包到本地仓库
- [leetcode] Unique Paths II
- MySQL集群的可行方案
- 分布式网站架构后续:zookeeper技术浅析
- 彻底解决Android GPS没法定位这一顽固问题
- 批处理——感叹号和变量延迟扩展
- ORACLE解锁record is locked by another user
- 理解RESTful架构
- 不留一丝痕迹。一个人徒步于阡陌高台之上
- Spring无配置使用properties文件