算法:最长回文子串长度
来源:互联网 发布:怎么查IP端口开关 编辑:程序博客网 时间:2024/06/06 00:21
动态规划:
最长回文子串:连续+回文
公式
p[i,j] =
1)if(str[i] == str[j]) p[i][j] = 2+p[i+1][j-1]
2)if(str[i]!=str[j]) p[i][j] = max(p[i][j-1], p[i+1][j])
p[i][i] = 1;
需要注意的是,在求解的时候计算的长度由短到长,否则在公式中依赖较短的长度的值不可得会造成错误。//最长回文子串int finddp1(string str){ int len = str.size(); vector<vector<int> > dp1(len, vector<int>(len,0)); for(int i = 0; i < len; i++) { dp1[i][i] = 1; } for(int i = 1; i < len; i++) //串长度 { for(int j = 0; j+i < len; j++) //串的起始和结束下标 { if(str[j] == str[j+i]) { dp1[j][j+i] = 2 + dp1[j+1][j+i-1]; } else { dp1[j][j+i] = max(dp1[j][j+i-1], dp1[j+1][j+i]); } } } return dp1[0][len-1];}int main(){ string input; cin>>input; printf("%d\n",finddp1(input)); return 0;}
0 0
- 算法:最长回文子串长度
- 最长回文子串长度
- 最长回文子串长度
- Manacher算法求最长回文子串的长度
- Manacher算法实现求最长回文子串的长度
- poj 3974 最长回文子串长度
- 010回文子串最长长度
- 求解最长回文子串的长度
- 最长回文子串算法
- 【算法】最长回文子串
- 算法---最长回文子串
- manacher算法求最长回文串长度
- hdu 3068 最长回文(最长回文子串 manacher算法)
- 【最长回文子串】HDU3068最长回文【Manacher算法】
- O(n)的方法求最长回文子串长度(Manacher算法)
- 对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
- 面试中遇到的算法题(最长回文子串的长度)
- 每天一道LeetCode-----最长回文子串/序列,从头开始的最长回文子串长度
- R0多线程
- const 相关
- Android EventBus的基本使用
- c++ 版的蛇形矩阵,正方形的,从数字1开始逐渐增大,呈回字形
- 策略模式使用场景
- 算法:最长回文子串长度
- 共同学习Java源码--常用数据类型--String(七)
- Unicode(UTF-8, UTF-16)
- wordpress函数相关
- HDOJ 1425-sort
- 微软想做apple和google的的混合体
- win7 64位操作系统中 Oracle 11g 安装教程(图解)
- Nginx常用日志分割方法
- 使用response输出随机图片