hdu 4745
题意:两只兔子在玩跳石头游戏;
题解:就是求这条串 和最长的两条回文子串(子串可以不连续,但是不可以相交), 网上还有一种解法就是将两个这样的串连起来,然后在长度最多为n的子区间求最长回文子串, 结果就是所有长度为 区间长度为n 的dp[k][k+n-1]值, 或者为dp[k][k+n-2]+1 (可以理解为最开始站在k+n-1这块石头上, 实际上可以由第一种方法推出来);
代码:

#include//hdu 4745,最长回文子序列(不是子串),
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn=1005;
int dp[2maxn][2maxn];//因为要把数列扩展两倍
int s[maxn];
int main()
{
int n;
while(scanf("%d",&n)&&n!=0){
for(int i=1;i<=n;i++){
scanf("%d",&s[i]);
}
memset(dp,0,sizeof(dp));
for(int i=n+1;i<=2n;i++){
s[i]=s[i-n];
}
for(int i=1;i<=2
n;i++){
dp[i][i]=1;//初始化要有
}
for(int l=1;l<=n;l++){//l的上限为n
for(int i=1;i+l<=2*n;i++){
int j=i+l;
dp[i][j]=max(dp[i+1][j],dp[i][j-1]);//当s[i]!=s[j]的时候
if(s[i]==s[j]){
dp[i][j]=max(dp[i][j],dp[i+1][j-1]+2);
}
}
}
int ans=1;
for(int i=1;i<=n;i++){
ans=max(ans,max(dp[i][i+n-1],dp[i][i+n-2]+1));
}
printf("%d\n",ans);
}
return 0;
}

hdu4745(最长回文子序列)相关推荐

  1. 动态数组怎么定义_动态规划最长回文子序列

    动态规划|最长回文子序列 今天一起来学习Leetcode第 516 题:最长回文子序列. 题目描述 题目分析 首先回文字符串指的是形如"a","aa",''ab ...

  2. 算法62---最长回文子序列长度(子串)、回文子序列总共个数(子串)【动态规划】...

    参考链接:https://www.cnblogs.com/AndyJee/p/4465696.html 一.题目:最长回文子序列长度 给定字符串,求它的最长回文子序列长度.回文子序列反转字符顺序后仍然 ...

  3. 最长回文子序列(LPS)

    问题描述: 回文是正序与逆序相同的非空字符串,例如"civic"."racecar"都是回文串.任意单个字符的回文是其本身. 求最长回文子序列要求在给定的字符串 ...

  4. 120. Leetcode 516. 最长回文子序列 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是字符串s在[i, j]范围内最长的回文子序列的长度为dp[i][j] 步骤二.推断状态方程: 如果当前的s[i] == s[j], ...

  5. C++longest palindromic subsequence最长回文子序列算法实现(附完整源码)

    C++longest palindromic subsequence最长回文子序列算法 C++longest palindromic subsequence最长回文子序列算法实现完整源码(定义,实现, ...

  6. leetcode516. 最长回文子序列(动态规划)

    ***给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度.***可以假设 s 的最大长度为 1000 . 示例 1: 输入: "bbbab" 输出: 4 一个可能的 ...

  7. 动态规划求一个序列的最长回文子序列(Longest Palindromic Substring )

    1.问题描述 给定一个字符串(序列),求该序列的最长的回文子序列. 2.分析 需要理解的几个概念: ---回文 ---子序列 ---子串 http://www.cnblogs.com/LCCRNblo ...

  8. leetcode516 最长回文子序列

    给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "bbbb&qu ...

  9. LeetCode 516. 最长回文子序列(动态规划)

    1. 题目 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "b ...

最新文章

  1. LDA基本介绍以及LDA源码分析(BLEI)
  2. 【数理知识】《矩阵论》方保镕老师-第8章-矩阵在数学内外的应用
  3. Android 工程的创建
  4. 基础算法学习(二)_二叉树及应用赫夫曼编码
  5. 漫画:数据中台中台建设的十大误区(建议收藏)
  6. 女式T恤行业调研报告 - 市场现状分析与发展前景预测
  7. 图片缩放与目标值的规范
  8. shell脚本if语句判断
  9. 黑php的称呼,“黑”起母校都是把好手!这些高校别称你绝对想不到
  10. java一定时间间隔的定时任务_详解java定时任务
  11. Java 基础常见面试题大全
  12. 下载 SharePoint Server 2016
  13. 苹果雪豹操作系统_苹果 M1 版 MacBook 软件兼容实测:VS Code、PhotoShop 目前还不能用(附列表)...
  14. python实现矩阵乘法(不用numpy)
  15. 三大思维导图软件比较
  16. 【seo入门教程】零基础新手学seo必备
  17. 商品期货基本面研究纲要
  18. 编程实现在IntAct数据集上批量查找蛋白交互对
  19. ffmpeg将mp3转m4a文件
  20. win10安装MingW64

热门文章

  1. 台式计算机屏幕扩展,电脑扩展显示器调整的方法
  2. 针对文件流转Base64的操作
  3. 二相漏电断路器接线图_配电箱内断路器的接线方式,以及断路器1P、2P的含义解析!...
  4. 华为浏览器html页样式没了,华为TE40web页面无发登录如何解决?
  5. python银行家算法例题详解_攒人品之作-能考408大题的知识点整理(有两个知识点的补充)...
  6. live555 android,live555
  7. Testlink使用文档
  8. 我的世界Bukkit服务器插件开发教程(十一)粒子、药水效果与音效
  9. Python中的os.chdir()函数:改变当前工作目录
  10. 包教包会—全网最易懂的全加器高位进位和低位进位讲解