N:Match for Bonus
这题真是折磨死了我了交了17遍才过(不算小号的)。
这题就是LCS(最长公共子序列)算法的拓展了。
LCS算法的递归公式就是这样了
字符相同时候 dp[i][j]=dp[i-1][j-1]+1
不同时候 dp[i][j]=MAX(dp[i][j-1],dp[i-1][j])
然后这题不同的是,LSC算法里相同是叠加,也就是每次加1,然后这题要加上其字符代表的价值。
然后就能得出答案是dp[i-1][j-i]。
这题,在ZOJ上这样就可以结束了,可以我们TOJ上较之原题加大了字符串长度。。。就是如果按照题意开dp数组会爆内存。。这折磨了我好久,之后还是问crq才知道要用滚动数组。
然后说滚动数组,这里讲二维滚动数组 这题可以直接将i%2,实现压缩空间的目的。
嗯。。就是这样了。(第一次正式写解题报告,略紧张)