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号