动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。动态规划算法将问题的解决方案视为一系列决策的结果。
贪心思想属于动态规划思想中的一种,其基本原理是找出整体当中给的每个局部子结构的最优解(循环里面的每一个i,对每一个字符(局部)求解),并且最终将所有的这些局部最优解结合(max函数取最大,本题以这种方式结合)起来形成整体上的一个最优解。
中心拓展法(中心扩散法也很好理解,我们遍历字符串的每一个字符,然后以当前字符为中心往两边扩散,查找最长的回文子串,)
对奇数个字符(解释同右侧括号)的时候比较容易思考,且一定有解。但是偶数个的字符的时候(不是要求解的字符串是偶数个,是解的最大回文字符串是偶数个eg:cabbaef,因为解的最大回文字符串奇偶是未可知的)就没办法找到中心了,比如abba。
这种情况判定就是拿两个相邻的字符先判定,i和i+1作为起点(若最大回文串是技术则是i=i作为起点,一个数一定是回文的),若i与i+1相等,这也是一个回文串,这个时候其实就是把i和i+1看作一个数,然后往两边扩散,也就是转化成立奇数的情况。max(fun(A, i, i), fun(A, i, i + 1)所有才有了这段代码