请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

波波老师,Integer Break问题的动态规划解法中求memo[i]的时候为什么还要和memo[i]自己比较

for(int i = 2;i <= n;i++){

    for(int j = 1;j <= i - 1;j++){

        memory[i] = max3(memory[i],j * (i - j),j * memory[i - j]);

    }

}


正在回答 回答被采纳积分+3

1回答

liuyubobobo 2018-07-29 14:51:03

在内层循环中,对于每一个当下的j,j*(i-j)是指把i分成两个数j和i-j得到的结果;j * memo[i - j])指的是把i分成多于两个数(至少三个数),其中有一个数字为j的结果。可以看出,这两个情况都至少有一个数字为j。但是memo[i]中存储的最优值,可能并没有一个数字j。所以,要将以前获得的memo[i]的最优值,和当下,考虑某一个具体的j时得到的最优值比较,选取最好的结果:)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信