【问题标题】:Compile Error : Non-Constant Array Bound (Dynamic Programming)编译错误:非恒定数组绑定(动态编程)
【发布时间】:2017-06-15 19:14:07
【问题描述】:

我正在尝试使用 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]
}

【问题讨论】:

  • 能否请您包括控制台在出错时所说的内容。
  • 您不能将var dp[m][n] int 与变量一起使用,如果您需要动态矩阵,您必须使用切片或使用常量值定义dp

标签: go dynamic


【解决方案1】:

正如@Motakjuq 在评论中提到的:你不能定义一个动态数组,数组的两个维度都必须是常量,但是 slice 会帮助你。

使用这样的东西:

dp := make([][]int, m)
for i := range dp {
    dp[i] = make([]int, n)
}

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多