//动态规划
/**
 * 
 * @param matrix int整型二维数组 the matrix
 * @return int整型
 */
function minPathSum( matrix ) {
    let x = matrix.length;
    let y = matrix[0].length;
    let dp = Array(x).fill(0).map(x => Array(y).fill(0));
    dp[0][0] = matrix[0][0];
    for (let i = 1; i < y; i++) {
        dp[0][i] = dp[0][i-1] + matrix[0][i];
    }
    for (let i =1 ; i< x; i++) {
        dp[i][0] = dp[i-1][0] + matrix[i][0];
    }
    for (let i=1; i< x; i++){
        for(let j=1; j<y; j++) {
            dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + matrix[i][j]
        }
    }
    return dp[x-1][y-1];
}



module.exports = {
    minPathSum : minPathSum
};