题意
2*n长度的数字串a,A和B分别选出n个数字组成子数字串,求两子数字串的最大和。
题解
设dp[i][j]是后i个数其中A选了j个数的最大和(从后往前选在状态转移时可以不管A和B具体选了哪些数字),假设a已经是倒序状态,那么转移方程为:
dp[i+1][j]=max{ dp[i][j]+a[i+1]*10^(i-j), dp[i][j-1]+a[i+1]*10^(j-1) }
初始状态dp[0][0]=0, 除开初始状态dp数组初始值最好设为负数因为输入数字串有0。注意j不要超过n。最大和是dp[2n][n],状态回溯输出答案即可。
吐槽
乍一看数据规模以为是状压,结果上手发现是O(n^2)的DP。