首页 > 其他分享 >hdu4632 Palindrome subsequence--区间dp

hdu4632 Palindrome subsequence--区间dp

时间:2022-12-06 20:34:05浏览次数:87  
标签:子串 Palindrome -- hdu4632 len int include dp 回文


原题链接:​​http://acm.hdu.edu.cn/showproblem.php?pid=4632​


题意:求一个字符串所有子序列是回文的个数,注意子序列是这样的情况:原串abcde,子串abd。注意与子串含义不同。


#define _CRT_SECURE_NO_DEPRECATE 

#include<iostream>
#include<vector>
#include<cstring>
#include<queue>
#include<stack>
#include<algorithm>
#include<cmath>
#define INF 99999999
#define eps 0.0001
using namespace std;

int t;
int dp[1005][1005];//dp[i][j]表示i到j区间内的种数
char s[1005];

int main()
{
scanf("%d", &t);
for (int cas = 1; cas <= t; cas++)
{
scanf("%s", s);
int len = strlen(s);
memset(dp, 0, sizeof(dp));
for (int i = 0; i < len; i++)
dp[i][i] = 1;

for (int j = 0; j < len; j++)
{
for (int i = j - 1; i >= 0; i--)
{
dp[i][j] = (dp[i + 1][j] + dp[i][j - 1] - dp[i + 1][j - 1] + 10007) % 10007; //j~i的区间的回文数是j+1~i与j~i-1区间
//回文数的和,但是要注意这里会有重复的
if (s[i] == s[j])
dp[i][j] = (dp[i][j] + dp[i + 1][j - 1] + 1) % 10007;如果区间两头是相等的,则要加上dp[j+1][i-1]+1,
//因为首尾是可以组成一个回文子串的,而且首尾可以与中间任何一个回文子串组成新的回文子串
}
}

printf("Case %d: %d\n", cas, dp[0][len - 1]);
}


return 0;
}




标签:子串,Palindrome,--,hdu4632,len,int,include,dp,回文
From: https://blog.51cto.com/u_11937443/5916613

相关文章

  • 很简单的源码剖析-SpringBoot内嵌Tomcat原理
    SpringBoot默认支持Tomcat,Jetty,和Undertow作为底层容器。而SpringBoot默认使用Tomcat,一旦引入spring-boot-starter-web模块,就默认使用Tomcat容器。<dependency><gr......
  • Linux 文件与目录管理
    Linux的目录结构为树状结构,最顶级的目录为根目录/。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。在开始本教程前我们需要先知道什么是绝对路径与相对......
  • 【jmeter逻辑控制器概览】
    一、说明Jmeter官网对逻辑控制器的解释是:“LogicControllersdeterminetheorderinwhichSamplersareprocessed.”。意思是说,逻辑控制器可以控制采样器(samplers)的执......
  • python制作简单的查询工具
    前言:利用python的flask框架制作简单的手机号码归属地查询工具。首先需要做两个页面,第一个页面收集用户的输入信息,点击“查询”按钮后,跳转到第二个页面,显示查询到的信息。一......
  • Vulnhub之Rickdiculously靶机详细测试过程
    Rickdiculously识别目标主机IP地址─(kali㉿kali)-[~/Vulnhub/Rickdiculously]└─$sudonetdiscover-ieth1Currentlyscanning:192.168.60.0/16|ScreenVie......
  • 洛谷月赛简单题目选做
    简单题目指黄+~蓝P5888传球游戏Easy考虑朴素dp,设\(dp[i][j]\),表示第\(j\)轮球在\(i\)手中的方案数,时间复杂度\(O(nm)\)。观察到如果两个人均不是\(1\)号......
  • 219.contains-duplicate-ii 存在重复元素II
    问题描述219.存在重复元素II解题思路利用unordered_map记录元素出现的次数,使用滑动窗口法。代码classSolution{public:boolcontainsNearbyDuplicate(vector<......
  • 包层次的时间同步实验
    一、实验目的理解掌握时间同步的重要意义了解时间同步的基本方法,理解TPSN协议机理掌握TinyOS定时器相关接口和组件的使用4.能够在TinyOS中实现多节点间的时间......
  • 图像相似性 - 图像查重
    首先区别一下图像查重和图像检索的区别,其实不必在意这些字眼,理解其本质即可,图像查重是像素级的相似图像检索是特征级的相似,或者说是一类物体 图像相似包......
  • 把userId:12323 直接拿到12323
    JSONObjectjsonObject1=JSONObject.parseObject(mqttMessage);MessageVomessageVo=  JSONObject.toJavaObject(jsonObject1,MessageVo.class); 把redis拿到的......