func minimumTotal(triangle [][]int) int {
n := len(triangle)
if n == 0 {
return 0
}
dp := make([][]int, n)
for i := 0; i < n; i++ {
dp[i] = make([]int, i+1)
}
dp[0][0] = triangle[0][0]
for i := 1; i < n; i++ {
dp[i][0] = dp[i-1][0] + triangle[i][0]
for j := 1; j < i; j++ {
dp[i][j] = min(dp[i-1][j-1]+triangle[i][j], dp[i-1][j]+triangle[i][j])
}
dp[i][i] = dp[i-1][i-1] + triangle[i][i]
}
Min := 10001
for i:=0;i<n;i++{
Min =min(Min,dp[n-1][i])
}
return Min
}
func min(a, b int) int {
if a < b {
return a
}
return b
}