题意:
就是给你总共n个方块,然后让你每次消去一些方块,然后获得的得分是消去方块数的平方。问最后游戏结束的时候得分最大是多少?
思路:
这道题是一道记忆性动归程序,主要是那个dp的状态转移方程有点难想。。。
首先,我们记click_box(i,j,ex_len):表示的是在第j个大块之后有ex_len长度的大块(大块就是相同颜色进行合并之后的块)且j的颜色和ex_len的颜色相同时,在这种情况下将i-j以及ex_len这些方块进行消除之后所得获得分数的最大值。
然后进行推:click_box(i,j,ex_len) : ①j和ex_len大块都被消去,那么最大的得分就是click_box(i,j-1,0)+(len[j]+ex_len)^2
②j和ex_len进行合并之后,不进行消去,而是往前面去寻找是否还有和它们颜色相同的方块,并再进行合并。
然后在这两种情况下进行递归就好啦~~
至于为什么二维是不行的,因为它无法限制第二种情况。
如有理解不清楚的,