题解 | #矩阵的最小路径和#

矩阵的最小路径和

http://www.nowcoder.com/practice/38ae72379d42471db1c537914b06d48e


using namespace std;

int DP(vector<vector<int>> &mat,vector<vector<int>>& dp,int x,int y){
    int n,m;
    n=mat.size();m=mat[0].size();
    if(!x&&!y)//左上角
        return dp[x][y];
    if(!x)//第一行
        return dp[x][y]+dp[x][y-1];
    if(!y)//第一列
        return dp[x][y]+dp[x-1][y];
    return dp[x][y]+min(dp[x-1][y],dp[x][y-1]);
}
int main(){
    int n,m;
    cin>>n>>m;
    vector<vector<int>> matrix(n,vector<int>(m));
    vector<vector<int>> dp(n,vector<int>(m));
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            cin>>matrix[i][j];
    for(int i=0;i<n;i++)
       for(int j=0;j<m;j++)
           dp[i][j]=matrix[i][j];
        
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++){
            dp[i][j]=DP(matrix,dp,i,j);
        }
    cout<<dp[n-1][m-1];
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务