子问题&可复用

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

第一感觉

这咋下手?最后多少个都不知道 完全没法写
并且9和8也没关系 根本用不上

真的没关系?

比如f(10),肯定用不到f(9),但仅仅是结果用不到,比较的过程中肯定会用到
想f(10)和f(9)的关系:
f(10)可不可以从f(9)来?肯定可以,至少要参与比较,用不用另说
f(10) = 1f(9),也就是f(10) = f(i)f(10-i)
这个就是子问题了
按之前理解的范围 f(10)本来就可以从 1*9而来,现在找到了子问题就可以进行递归了
那么f(10)无非从'固定的(1,9)',也可以从'子问题(1,f(9))'转变而来

posted @ 2021-09-27 18:00  常熟阿诺  阅读(77)  评论(0编辑  收藏  举报