编译错误:非常数数组绑定(动态编程)
问题描述:
我试图解决使用golang和下面的动态编程的最小路径和问题是我的程序显示编译错误。编译错误:非常数数组绑定(动态编程)
enter code here
func minPathSum(grid [][]int) int {
var dp[m+1][n+1] int
dp[0][0] = grid[0][0]
//for column initialization
for i := 0; i <= m; i++ {
dp[i][0] = dp[i-1][0] + grid[i][0]
}
//for row initialization
for j := 0; j <= n; j++ {
dp[0][j] = dp[0][j-1] + grid[0][j]
}
for i := 0; i <= m; i++ {
for j := 0; j <= n; j++ {
dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1]) + grid[i][j]
}
}
return dp[m][n]
}
答
由于@Motakjuq在评论中提到:你不能定义一个动态数组,这两个方面必须是一个数组常量,但片会帮助你。
使用这样的事情:
dp := make([][]int, m)
for i := range dp {
dp[i] = make([]int, n)
}
可以请包括控制台说,在错误的东西。 – 2017-06-14 17:33:03
你不能在变量中使用'var dp [m] [n] int',如果你需要一个动态矩阵你必须使用切片或者用常量值定义'dp' – Motakjuq