题目如下:
有一个只包含1,2,3,4的数字,可以通过在任意位置增加或删除一位数字来将其变换成一个回文数,但是增加或删除数字所需要的代价是不一样的。
已知增加和删除每个数字的代价如下:
增加一个1,代价:100;删除一个1,代价:120。
增加一个2,代价:200;删除一个2,代价:350。
增加一个3,代价:360;删除一个3,代价:200。
增加一个4,代价:220;删除一个4,代价:320。
请问如何通过最小的代价价将一个数字变换为一个回文数。如果一个数字本身已经是一个回文数(包括一位数,例如:3),那么变换代价为0。
输入建议以字符串接收,输出将该数字变换为回文数的代价。
做这道题之前,可以先看一下leetcode上的一道题:让字符串成为回文串的最少插入次数。
解答这道题后,原来的题目就很好解决了,首先回文串就是从左到右和从右到左遍历是完全一样的结果,这道题有两个思路,都是动态规划,找到状态转移方程求解,第一个是直接对原字符串分析,另一个是将字符串进行反转,求两个串的最长子序列的长度,然后总长度减去最长子