完全平方数——动态规划

98 阅读1分钟

image.png

代码动态规划:

image.png

  1. 状态转移 1 到 根号 i 中的数做最后一次转换,也就是 f[i-(j的平方)] 然后再加 1 即可
func numSquares(n int) int {
    f := make([]int, n+1)
    for i := 1; i <= n; i++ {
        minn := math.MaxInt32
        for j := 1; j*j <= i; j++ {
            minn = min(minn, f[i-j*j])
        }
        f[i] = minn + 1
    }
    return f[n]
}

func min(a, b int) int {
    if a < b {
        return a
    }
    return b
}