您的位置:首页 > 产品设计 > UI/UE

leetcode@ [62/63] Unique Paths II

2015-10-23 14:53 507 查看
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
if(obstacleGrid.size()==0 || obstacleGrid[0].size()==0) return 0;
int m = obstacleGrid.size(), n = obstacleGrid[0].size();
if(obstacleGrid[m-1][n-1]==1) return 0;

vector<vector<int> > dp(m);
for(int i=0;i<dp.size();++i) dp[i].resize(n);
for(int i=0;i<dp.size();++i){
for(int j=0;j<dp[i].size();++j) dp[i][j]=0;
}

dp[0][0] = (obstacleGrid[0][0]==1) ? 0 : 1;
for(int i=1;i<dp.size();++i){
if(dp[i-1][0] && !obstacleGrid[i][0]) dp[i][0] = 1;
}
for(int j=1;j<dp[0].size();++j){
if(dp[0][j-1] && !obstacleGrid[0][j]) dp[0][j] = 1;
}
for(int i=1;i<dp.size();++i){
for(int j=1;j<dp[i].size();++j){
if(i>=1 && !obstacleGrid[i-1][j]) dp[i][j] += dp[i-1][j];
if(j>=1 && !obstacleGrid[i][j-1]) dp[i][j] += dp[i][j-1];
}
}

return dp[m-1][n-1];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: