简要题意:
每次可以在数组中插入一个数(可以在两端)或删除一个数,改变一个数;求让数组成为回文数组的最小步数。
这题的蓝太假了,水 dp \text{dp} dp,想到算法就可以做出。
关键还是要想到用 动态规划 啊,要是想不到这题就做不出来了。
(考场上可以先用搜索,然后记忆化推导也行,但是这里就不推了)
显然考虑区间 dp \text{dp} dp.
用 f i , j f_{i,j} fi,j 表示将 a i a_i ai 到 a j a_j aj 变成回文的最小步数。
那么有:
f i , j = { f i + 1 , j − 1 , s i = s j min ( f i + 1 , j , f i , j − 1 , f i + 1 , j − 1 ) , s i ≠ s