题目链接
本题题意,讲一个数拆分为n个数相加,使得他们的乘积为最大值
这里有两种做法,一种是分析能分成多少个3,由数学证明来看,分成3越多这个数就越大,这里可以自行证明,如果不用数学方法分析为什么是3最大(当然这不一定正确),你可以想10以内的数,最大可以分成33,如果是44就超过10,所以10以内能得到最大值得就是3
另外一种做法就是动态规划,对于一个数来说,可以分成
(i-j)j;例如3可以分成12,4可以分成1*3,2*2,
毫无疑问1+1+1+1一定是最小的,一个数的划分,
既然产生重复子结构我们就可以用动态规划的思想保存已经计算出来的重复数值,当然我们可以发现分解以后第一个数和最后一个数的计算结果是相同的,那我们可以做一个优化,一个属只要计算到i/2就