package main


/**
 *
 * @param matrix int整型二维数组 the matrix
 * @return int整型
 */
func minPathSum( matrix [][]int ) int {
    if len(matrix)==0{
        return 0
    }
    dp:=make([][]int,len(matrix))
    for i:=range dp{
        dp[i]=make([]int,len(matrix[0]))
    }
    for i:=0;i<len(matrix);i++{
        for j:=0;j<len(matrix[0]);j++{
            if i==0&&j==0{
                dp[i][j]=matrix[i][j]
            }else if i==0{
                dp[i][j]=dp[i][j-1]+matrix[i][j]
            }else if j==0{
                dp[i][j]=dp[i-1][j]+matrix[i][j]
            }else{
                dp[i][j]=min(dp[i-1][j],dp[i][j-1])+matrix[i][j]
            }
        }
    }
    return dp[len(matrix)-1 ][len(matrix[0])-1]
}

func min(l,r int)int{
    if l>r{
        return r
    }
    return l
}