1040 Longest Symmetric String (25 分)

  Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, given Is PAT&TAP symmetric?, the longest symmetric sub-string is s PAT&TAP s, hence you must output 11.

Input Specification:

  Each input file contains one test case which gives a non-empty string of length no more than 1000.

Output Specification:

  For each test case, simply print the maximum length in a line.

Sample Input:

Is PAT&TAP symmetric?

Sample Output:

11

解题思路:
  本题给出一行字符这里记为text,要求输出改行字符中最大回文串的长度。这里采用动态规划做法,用布尔数组dp[ bg ][ ed ]记录下标 bg ~ ed 组成的子串是否为回文串。设长度为1的字符串为回文串,在初始化dp数组是可以将长度为1与长度为2的字符串是否为回文串都标记完成。

  对任意一个字符串都有两种情况:

  1、是回文串,其对应dp为true;

  2、不是回文串,其对应dp为false;

  判断一个字符串是否为回文串只需要判断其首尾字符是否相等与其除首尾字符外的子串是否为回文串即可,这就转化为了求dp[bg + 1][ ed - 1],和判断text[ bg ]与text[ ed ]是否相等的问题。

  动态转移方程:dp[bg][ed] = 1(text[ bg ] ==  text[ ed ],dp[bg + 1][ ed - 1 ] == true)

之后只要遍历所有子串长度,遍历所有起始下标,并计根据其实下标与子串长度计算出末尾下标,根据动态转移方程即可求出答案。

 #include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3+;
bool dp[maxn][maxn] = {false}; //默认所有字符串都不是回文
string text; //text为出入的字符串
int main()
{
getline(cin, text);
int len = text.size();
int ans = ;
for(int i = ; i < len; i++){
dp[i][i] = true; //标记长度为1的字符串为回文串
ans = ; //最大回文串长度为1
if(i < len - && text[i] == text[i + ]){ //如果有两个连续字符
//(长度为2的回文串只有两个连续字符这种情况)
dp[i][i + ] = ; //标记其组成的字符串为回文串
ans = ; //最大回文串长度为2
}
}
for(int tempLen = ; tempLen <= len; tempLen++){ //遍历子串长度长度从3 ~ len的
for(int bg = ; bg + tempLen - < len; bg++){
//遍历起始位置,末尾下标为起始位置+当前子串长度-1,末尾下标不能达到给定字符串末位
int ed = bg + tempLen - ;
if(text[bg] == text[ed] && dp[bg + ][ed - ] == true){ //动态转移方程
dp[bg][ed] = ;
ans = tempLen; //记录答案
}
}
}
printf("%d\n", ans);
return ;
}

PTA (Advanced Level) 1040 Longest Symmetric String的更多相关文章

  1. PAT (Advanced Level) 1040. Longest Symmetric String (25)

    暴力. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ]; ...

  2. 1040. Longest Symmetric String (25)

    题目链接:http://www.patest.cn/contests/pat-a-practise/1040 题目: 1040. Longest Symmetric String (25) 时间限制 ...

  3. PAT 1040 Longest Symmetric String[dp][难]

    1040 Longest Symmetric String (25)(25 分) Given a string, you are supposed to output the length of th ...

  4. PAT 甲级 1040 Longest Symmetric String (25 分)(字符串最长对称字串,遍历)

    1040 Longest Symmetric String (25 分)   Given a string, you are supposed to output the length of the ...

  5. PAT 甲级 1040 Longest Symmetric String

    https://pintia.cn/problem-sets/994805342720868352/problems/994805446102073344 Given a string, you ar ...

  6. 1040 Longest Symmetric String (25分)(dp)

    Given a string, you are supposed to output the length of the longest symmetric sub-string. For examp ...

  7. 1040 Longest Symmetric String

    Given a string, you are supposed to output the length of the longest symmetric sub-string. For examp ...

  8. PAT甲题题解-1040. Longest Symmetric String (25)-求最长回文子串

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789177.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  9. PAT 1040 Longest Symmetric String

    #include <cstdio> #include <cstdlib> using namespace std; ]; ]; int syslen(char str[], i ...

随机推荐

  1. 目前主流的四大浏览器内核Trident、Gecko、WebKit以及Presto

    “浏览器内核”主要指渲染引擎(Rendering Engine),负责解析网页语法(如HTML.JavaScript)并渲染.展示网页.因此,所谓的浏览器内核通常也就是指浏览器所采用的渲染引擎,渲染引 ...

  2. 用.msi安装node时安装失败,出现rolling back action(转载)

    转载地址:https://blog.csdn.net/qq_33295622/article/details/52956369在重装node时出现了上图所示情况,解决方法如下: 1.在官网下载稳定版本 ...

  3. 2、Windows下安装配置Redis

    windows下redis软件开源安装包挂载到github上,下面将详细介绍如何在windows下安装redis服务器 下载地址:https://github.com/MSOpenTech/redis ...

  4. fatal: Not a git repository (or any parent up to mount point /home)

    问题:fatal: Not a git repository (or any parent up to mount point /home) 解决:git init

  5. mysql--pymysql 模块

    pymysql模块 一.安装 cmd中使用pip或者, pycharm中控制台选择Terminal输入下面的命令,即可安装pymysql模块 pip3 install pymysql 二. 连接,执行 ...

  6. clickonce联机模式

    发布时选择该程序只能联机使用,这样本地就不会进行安装. 参考地址:https://blog.csdn.net/dqs78833488/article/details/52513948

  7. 利用C# CefSharp Python采集某网站简历并自动发送邀请短信

    以往爬虫没怎么研究过,最近有个需求,要从某网站采集敏感信息,稍稍考虑了一下,决定利用C# Winform和Python一起来解决这个事件. 整个解决方案不复杂:C#编写WinForm窗体,进行数据分析 ...

  8. 那些令人敬佩的刚学OI的大佬

    我是萌新刚学OI,请问LCT怎么写常树最小啊 我是女生刚学OI,请问树链剖分哪里写挂了? 萌新求教,这棵SBT哪里有问题啊啊啊…… 刚学OI,请问可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最 ...

  9. 如何在WS系统的DOS命令台打印JAVA_HOME变量

    echo %JAVA_HOME% 查看环境变量 path 新增临时环境变量 path D:\test;%path% 注意是反斜杆 cls 清空 F7 显示历史CMD指令

  10. 47.ActiveMQ集群

    (声明:本文非EamonSec原创) 使用ZooKeeper实现的Master-Slave实现方式,是对ActiveMQ进行高可用的一种有效的解决方案,高可用的原理:使用ZooKeeper(集群)注册 ...