PAT 1040 求最长回文子串
来源:互联网 发布:客户关系维护软件 编辑:程序博客网 时间:2024/06/17 20:10
题意:求最长回文子串
思路:
用dp, dp[left][right] 代表了从left到right这个子串是不是回文子串。 利用这个状态能节省很多重复判断。
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<stack>#include<vector>#include<queue>#include<string>#include<map>using namespace std;#define INF 99999999#define M 1005int flagdp[M][M];int len;int fsym(char str[],int l,int r){if(l<0|| r>=len )return 0;if(l==r||l == r + 1)return 1;if(flagdp[l][r] == 1)return 1;else if(flagdp[l][r] == -1)return -1;if(str[l] == str[r]){flagdp[l][r] = fsym(str,l+1,r-1);}else flagdp[l][r]=-1;return flagdp[l][r];}int main(){int i,l,j,r,symlen,maxsymlen;memset(flagdp,0,sizeof(flagdp));char str[M];cin.getline(str,M);maxsymlen = 0;len=strlen(str);int flags;for(i=0;i<len;i++){for(j=len-1;j>=i;j--){flags = fsym(str,i,j);if(flags == 1 && maxsymlen< j - i + 1)maxsymlen=j-i+1;}}cout<<maxsymlen<<endl;}
阅读全文
0 0
- PAT 1040 求最长回文子串
- 求最长回文子串
- 求最长回文子串
- 求最长回文子串
- 求最长回文子串
- 求最长回文子串
- 求最长回文子串
- 求最长回文子串
- HDU 3068 最长回文(求最长回文子串)
- Manacher算法求最长回文子串
- Manacher算法求最长回文子串
- O(n) 求 最长回文子串
- O(n) 求 最长回文子串
- O(n)求最长回文子串
- 求最长回文子串读书笔记
- manacher求最长回文子串
- 求字符串的最长回文子串
- 求字符串中的最长回文子串
- HDU1392 Surround the Trees(凸包)
- Spring事务传播特性的浅析——事务方法嵌套调用的迷茫
- mybatis String向date的转换
- Android 新一代多渠道打包神器(支持N版本新的签名方法)
- 安卓应用角标
- PAT 1040 求最长回文子串
- 面试常遇到的成绩排序问题
- 关于#ifdef _DEBUG失效问题
- Python 速查表
- 详解内部类
- LeetCode-504. Base 7 (Java)
- Mac版R语言(六)文本挖掘(用户词库的导入、批量导入搜狗词库)
- ZooKeeper机制架构
- shiro的会话工厂SessionFactory