343. 整数拆分 golang 动态规划
生活随笔
收集整理的這篇文章主要介紹了
343. 整数拆分 golang 动态规划
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給定一個正整數 n,將其拆分為至少兩個正整數的和,并使這些整數的乘積最大化。 返回你可以獲得的最大乘積。
示例 1:
輸入: 2
輸出: 1
解釋: 2 = 1 + 1, 1 × 1 = 1。
示例 2:
輸入: 10
輸出: 36
解釋: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。
說明: 你可以假設 n 不小于 2 且不大于 58。
解法
首先這個題可以不用動態規劃的方式做出來。思路是將任何一個數拆分成多少個3,然后進行余數判斷,就可以得到正確答案。
動態規劃
code
func integerBreak(n int) int {dp := make([]int, n+1)dp[1] = 1dp[2] = 1for i := 3; i <=n; i++ {for j := 1; j < i; j++ {dp[i] = max(dp[i], j * max(i-j, dp[i-j]))}}// fmt.Println(dp)return dp[n] }func max(a, b int) int {if a > b {return a}return b }總結
以上是生活随笔為你收集整理的343. 整数拆分 golang 动态规划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 213. 打家劫舍 II golang
- 下一篇: 子宫畸形不孕不育是什么