题目
设有一个长度为n的数字字符串,分成k+1个部份,使其k+1部份相加的和为最大。例如:数字串’340670’,k=1,其加法有
3+40670=40673 34+0670=704 340+670=1010 3406+70=3476 34076+0=34076
其最大和为40676。
问题:当数字串和k给出后,找出一个分法使和为最大。
输入
输入n和k,n表示有多少个数字字符,k代表共要用多少个加号
输出
最大和
输出样例
6 1
340670
输出样例
40673
解题思路
f [ i ] [ 0 ] = f [ i − 1 ] [ 0 ] ∗ 10 + a [ i ] ; f[i][0]=f[i-1][0]*10+a[i]; f[i][0]=f[i−1][0]∗10+a[i];
其实这个公式是为了求所谓的后缀和,就是把第i个前的数来加起来,但是要乘以10,因为有可能是有两个数以上的,那就有十位个位之分,所以要乘10.
f [ i ] [ k ] = m a x ( f [ i ] [ k ] , f [ j − 1 ] [ k − 1 ] + b [ j ] [ i ] ) ; f[i][k]=max(f[i][k],f[j-1][k-1]+b[j][i]); f[i][k]=max(f[i][k],