LeetCode[63. 不同路径 II]
思路:
- 这是一道DP问题
- 集合划分: 当前值可以从两个地方转移过来①从上面转移过来②从左边转移过来
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& g) {
int n = g.size(), m = g[0].size();
vector<vector<long long>> f(n,vector<long long>(m));//定义我们的状态矩阵
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
if(g[i][j]) continue;//如果当前位置是障碍,那就什么都不做
if(!i && !j) f[i][j] = 1;//起始位置的f值设为1
if(i > 0) f[i][j] += f[i - 1][j];//当前位置是从上面过来的
if(j > 0) f[i][j] += f[i][j - 1];//当前位置是从左边过来的
}
}
return f[n - 1][m - 1];
}
};
AI大三在读

浙公网安备 33010602011771号