● OpenJudge 最佳加法表达式 http://cxsjsxmooc.openjudge.cn/2017t2springhw5/3/
思路:
假定数字串长度是n,添完加号后,表达式的最后一个加号添加在第 i 个数字后面,
那么整个表达式的最小值,等于在前 i 个数字中插入 m – 1个加号所能形成的最小值,加上第 i + 1到第 n个数字所组成的数的值(i从1开始算)。
设V(m,n)表示在n个数字中插入m个加号所能形成的表达式最小值,
Num(i,j)表示从第i个数字到第j个数字所组成的数。数字编号从1开始算。此操作复杂度是O(j-i+1),可以预处理后存起来。那么:
if(m=0)
V(m,n)=n个数字构成的整数;
else if (n<m+1)
V(m,n)=∞;
else
V(m,n)=min{V(m-1,i)+Num(i+1,n)}(i=m...n-1);