From f5b8f8faeb8aa5965e534ba41ae8a2ea378d20b2 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Sat, 12 Jun 2021 13:57:42 -0400 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B00343.=E6=95=B4=E6=95=B0?= =?UTF-8?q?=E6=8B=86=E5=88=86.md=20python3=E4=BB=A3=E7=A0=81=20-=20?= =?UTF-8?q?=E5=B0=8F=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据讲解, dp[0], dp[1]不应该初始化. 如果 是for j in range(1, i): 递归方程就会需要dp[1]. 虽然也可以AC, 但是不合逻辑. --- problems/0343.整数拆分.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/problems/0343.整数拆分.md b/problems/0343.整数拆分.md index fefaa293..cf60575f 100644 --- a/problems/0343.整数拆分.md +++ b/problems/0343.整数拆分.md @@ -218,7 +218,7 @@ class Solution: # 假设对正整数 i 拆分出的第一个正整数是 j(1 <= j < i),则有以下两种方案: # 1) 将 i 拆分成 j 和 i−j 的和,且 i−j 不再拆分成多个正整数,此时的乘积是 j * (i-j) # 2) 将 i 拆分成 j 和 i−j 的和,且 i−j 继续拆分成多个正整数,此时的乘积是 j * dp[i-j] - for j in range(1, i): + for j in range(1, i - 1): dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j])) return dp[n] ```