题解 | #挤奶路径#
挤奶路径
https://www.nowcoder.com/practice/6ab56cedae0646e19fb64b8bdbad82a6
知识点:
动态规划
分析:
//f[i][j] 表示 到达 i, j一共有多少种不同的路径
// 属性 count
//状态计算:包含来自左边的 f[i][j-1] 包含来自上方的f[i-1][j]
//计算的时候遇到cows[k] == 1则停止,那么==0 可以继续走,则f[i][j] = f[i-1][j] + f[i][j-1] (都有可能)
//注意边界:第0行 第0列 由于只能是从0,0开始经过他们不存在其他情况,初始化为1
编程语言:
C++
完整代码:
#include <cstring> #include <vector> class Solution { public: static const int N = 55; int f[N][N]; int uniquePathsWithObstacles(vector<vector<int> >& cows) { int n = cows.size(); int m = cows[0].size(); for(int i = 0;i<n;i++) { if(cows[i][0 ]== 0) f[i][0] = 1; else break; } for(int i = 0;i<m;i++) { if(cows[0][i] == 0) f[0][i] = 1; else break; } for(int i = 1;i <n;i++){ for(int j = 1;j<m ;j++){ if(cows[i][j] == 0){ f[i][j] = f[i-1][j]+f[i][j-1]; }else{ f[i][j] = 0; } } } return f[n - 1][m - 1]; } };