题意:
给出一个字符串,求出其中最大的回文串字数
要点:
这题比较好的办法是用dp做:
- dp[i][j]表示从s[i]到s[j]是否为回文串,用0、1区分
- s[i]=s[j]时,dp[i][j]=dp[i+1][j-1];s[i]!=s[j]时,dp[i][j]=0
- 边界:dp[i][i]=1,dp[i][i+1]=(s[i]==s[i+1])?1:0
- 因为i、j如果从小到大的顺序来枚举的话,无法保证更新dp[i][j]的时候dp[i+1][j-1]已经被计算过。因此不妨考虑按照字串的长度和子串的初试位置进行枚举,即第一遍将长度为3的子串的dp的值全部求出,第二遍通过第一遍结果计算出长度为4的子串的dp的值…这样就可以避免状态无法转移的问题
#include #include #include #include
/*以字符串中每个字符为对称轴*/#include #include #include #include