链接:https://www.nowcoder.com/acm/contest/6/C
来源:牛客网
题目
输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。
我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两边看完全一致的字符串,如"aba"和"xyyx")。
需要求出所有可能的C中价值最大的字符串,输出这个最大价值即可

输入

第一行一个整数T(T ≤ 50)。 接下来2T行,每两行两个字符串分别代表A,B(|A|,|B| ≤ 50),A,B的字符集为全体小写字母。

输出

对于每组数据输出一行一个整数表示价值最大的C的价值。

Input

2
aa
bb
a
aaaabcaa

Output

4
5
#include <bits/stdc++.h>
using namespace std;const int N = 55;
const int INF = 0x3f3f3f3f;
char a[N], b[N];
int dp[N][N][N][N];int main ()
{int T; scanf("%d", &T);while(T--) {memset(dp,0,sizeof(dp));scanf("%s%s", a+1, b+1);int l1 = strlen(a+1), l2 = strlen(b+1);int ans = 0;for(int len1=0; len1 <= l1; len1++){for(int len2=0; len2 <= l2; len2++){for(int i=1, j=i+len1-1;j <= l1; i++,j++){for(int k=1,l=k+len2-1; l <= l2; k++,l++){if(len1 == 0 && len2 == 0)dp[i][j][k][l] = 0;else if((len1 == 0 && len2 == 1) || (len1 == 1 && len2 == 0))dp[i][j][k][l] = 1;else {dp[i][j][k][l] = -INF;if(i<j && a[i] == a[j]) dp[i][j][k][l] = max(dp[i][j][k][l], dp[i+1][j-1][k][l] + 2);if(k<l && b[k] == b[l]) dp[i][j][k][l] = max(dp[i][j][k][l], dp[i][j][k+1][l-1] + 2);if(i<=j && k<=l && a[i]== b[l]) dp[i][j][k][l] = max(dp[i][j][k][l], dp[i+1][j][k][l-1]+2);if(i<=j && k<=l && a[j] == b[k]) dp[i][j][k][l] = max(dp[i][j][k][l], dp[i][j-1][k+1][l]+2);ans = max(ans, dp[i][j][k][l]);}}}}}printf("%d\n", ans);}   return 0;
}

转载于:https://www.cnblogs.com/Draymonder/p/9879604.html

nowcoder 合并回文子串相关推荐

  1. 牛客网【每日一题】3月26日 合并回文子串

    题号:NC13230 名称:合并回文子串 来源:美团2017年CodeM大赛-初赛A轮 题目链接 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K ...

  2. CodeM美团点评编程大赛初赛A轮 B.合并回文子串【区间Dp】

    [编程题] 合并回文子串 时间限制:2秒 空间限制:262144K 输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变.如"abc"和"xyz&qu ...

  3. 牛客每日练习----合并回文串,年轮广场,安卓图案解锁

    大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤. 链接:https://ac.nowcoder.com/acm/problem/1323 ...

  4. LeetCode实战:最长回文子串

    题目英文 Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...

  5. 最长公共回文子串(Longest_Common_Palindrome_Substring)

    一.基本概念 最长公共回文子串(Longest_Common_Palindrome_Substring):两个字符串中最长的公共子串并且是回文字符串的子串 二.算法 三.代码 #include< ...

  6. 怎么判断一个字符串的最长回文子串是否在头尾_【Leetcode每日打卡】最长回文串...

    干货预警:所有文章都会首发于我的公众号[甜姨的奇妙冒险],欢迎watch. 一.来历: 力扣从3月开始开启了每日一题打卡活动,于是跟风加入了打卡大军,这两天写评论.发题解,没想到反响还不错,收到了来自 ...

  7. Manacher's algorithm: 最长回文子串算法

    Manacher 算法是时间.空间复杂度都为 O(n) 的解决 Longest palindromic substring(最长回文子串)的算法.回文串是中心对称的串,比如 'abcba'.'abcc ...

  8. Manachar算法(马拉车算法):快速求取最长回文子串

    当我们求取最长回文子串时,常见的方法就是中心扩散法,即从字符中心出发,向两边对比,检查是否相等,若等于,则继续检查,并使当前字符中心对应的最长回文子串长度加一,否则,结束该字符中心的回文检查,比较与当 ...

  9. python回文子串_LeetCode 647. 回文子串 | Python

    647. 回文子串 题目 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串. 示例 1: 输入:" ...

  10. leetcode--最长回文子串--python

    文章目录 题目 题目详情 示例 解题思路 思路 代码 运行结果 最佳方案 题目 题目详情 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 输入: &qu ...

最新文章

  1. Java练习 SDUT-2737_小鑫の日常系列故事(六)——奇遇记
  2. etal斜体吗 参考文献_论文格式与论文参考文献格式
  3. 在linux安装mysql重启提示You must SET PASSWORD before executing this statement的解决方法
  4. 【不采用】人工智能如何帮助银行反欺诈
  5. springboot与php通讯,Springboot第二篇:与前端fetch通信(关于传输数据上传文件等前后端的处理)...
  6. 软件测试技术——软件测试概述
  7. NTP (Network Time Protocol)
  8. string数组转换成int数组,数组转字符串,字符串转list,list集合转字符串,删除数组中为空的元素,list转数组 数组转list
  9. oracle考试试题及其答案,Oracle期末考试试题及答案-
  10. 微信小程序上传图片失败总结
  11. SQLite3 编译
  12. android自动播放音乐代码,Android MediaPlayer实现音乐播放器实例代码
  13. 【云流送技术】为手办行业可以带来哪些变革
  14. WIN系统仿MAC任务栏工具分享——RocketDock
  15. intel无线网卡日志服务器,Intel的无线网卡总掉线,慎入
  16. java 随机生成不重复的数字_java中生成不重复随机的数字
  17. 麻省理工学院计算机博士毕业,努力比起点更重要!有高职院校学生,拿下麻省理工大学博士offer...
  18. 心血来潮,总结技术框架
  19. 统计学习方法——统计学习的分类
  20. html 下拉组件被下面的组件挡住,div被select下拉框挡住了--5种解决方法

热门文章

  1. vsftpd虚拟用户与匿名用户配合使用
  2. UVA 10917 Walk Through the Forest 最短路 + DP
  3. 浅谈Hybrid技术的设计与实现
  4. 我设计了一个支撑数亿用户的系统
  5. 终于实现了 SpringBoot+WebSocket实时监控异常....
  6. 大选期间完成25亿推送:美国移动push平台Urban Airship架构解密
  7. 谷歌如何在设计上脱胎换骨
  8. 微软百名员工公开请愿,力挺“996.ICU”
  9. onSaveInstanceState onRestoreInstanceState
  10. java 浅堆 深堆_【深入浅出-JVM】(57):深堆、浅堆