哈工大2013算法设计与分析期末考试第5题

给出N个1-9的数字 (v1,v2,…,vN),不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。并说明其具有优化子结构性质及子问题重叠性质。
例如: N=5, K=2,5个数字分别为1、2、3、4、5,可以加成:
1*2*(3+4+5)=24
1*(2+3)*(4+5)=45
(1*2+3)*(4+5)=45

考虑终态,dp[n][m]表示前n个数,有m个乘法的最大值,

它的前驱状态为dp[k][m - 1] * prefix(k + 1, n), 其中k∈[1, n-1],prefix为k + 1~n的区间和

状态转移方程为

dp[i][j] = max(dp[i][j], dp[k][j - 1] * prefix(k + 1, i))

 

posted @ 2022-05-23 21:15  WTSRUVF  阅读(82)  评论(0编辑  收藏  举报