首先,我们把字符串反转,然后用反串和原串求最大公共子序列,再用字符串长度减去最大公共子序列的长度就是答案,我们还可以用滚动数组优化内存

状态转移方程:

(i长度的a串和j长度的b串的最长公共子序列长度)

1.dp[i-1][j-1]+1     a[i]=b[j]

dp[i][j]=

2.max(dp[i][j-1],dp[i-1][j])     a[i]!=b[j]

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
int re[2][1005];//使用滚动数组优化了空间
int main()
{int t,i,j;string a,b;scanf("%d",&t);while(t--){cin>>a;b=a;reverse(a.begin(),a.end());memset(re,0,sizeof(re));for(i=0;i<a.length();++i)for(j=0;j<b.length();++j){if(a[i]==b[j]){re[(i+1)&1][j+1]=re[i&1][j]+1;}else re[(i+1)&1][j+1]=re[i&1][j+1]>re[(i+1)&1][j]?re[i&1][j+1]:re[(i+1)&1][j];//条件表达式是最省时间的
         }printf("%d\n",a.length()-re[(a.length())&1][b.length()]);}return 0;
}

转载于:https://www.cnblogs.com/A-way/archive/2013/05/02/3054423.html

NYOJ_37_回文字符串相关推荐

  1. C语言判断回文字符串

    C语言判断回文字符串 #include<stdio.h> char *huiwen(char *str){int i, j,t=0;for(i = 0,j = strlen(str) - ...

  2. NYOJ 回文字符串

    回文字符串 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然, ...

  3. java判断回文字符串几种简单的实现

    11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进 ...

  4. 题目1192:回文字符串

    题目描述: 给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的. 输入: 输入包括一行字符串,其长度不超过1000. 输出: 可能有多组测试数据,对于每组数据,如果是回文字符串 ...

  5. 51nod 1092 回文字符串

    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符串都可以通过向中间 ...

  6. 判断字符串_python实现--判断回文字符串、回文链表、回文数

    所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构Python系列教程,免费获取,遇到bug及时反馈, ...

  7. Palindrome(插入字符变成回文字符串)

    题目:给定一个字符串,问最少插入多少字符,使字符串变成回文字符串. 思路:X:原字符串 Y:逆字符串 需要插入的字符数=X的长度-(X与Y的LCS的长度)     这里使用了滚动数组,压缩空间,原因: ...

  8. codevs1520 回文字符串

    题解 题目描述 Description 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如: aba kllkllk tyyt 都是. 当然,我们给你的问题不会再简单到判断一个字 ...

  9. 回文字符串啊~---太搞了 少年 DXH

    点击打开链接 j几天比赛了刚好出现了回文字符串,记得不要喝公共自序列区分啊,回文就是从前到后看是一样的,从后往前看也是一样的, 这道题的思路就是先找出本串中自有的回文串,然后再加上不是回文的剩下的子串 ...

最新文章

  1. 全局负载均衡与CDN内容分发
  2. 一般将来时语法课教案_英语语法:一般现在时和现在进行时
  3. 【干货】机器学习中样本比例不平衡的处理方法
  4. 用于数据科学的Python库,命令行工具,Jenkins X,DevOps,Perl 6等
  5. apache是怎么运行php的_PHP与WEB服务器是如何交互的
  6. c语言flappy bird代码,Flappy bird源代码(略吊)
  7. 容器的六大误区和八大正确场景(颠覆你的认知)
  8. 一、知识图谱商业应用
  9. VMWARE虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本。 模块“Upgrade”启动失败。 未能启动虚拟机。
  10. 开学季,微信公众号图文排版必备十大素材
  11. linux禁用137 138端口,如何关闭135、137、138、139、445端口方法
  12. 最新WingIDE注册破解方法
  13. 纵向手风琴html,CSS3制作垂直手风琴
  14. MATLAB Jacobi迭代法 求解线性方程组
  15. Python程序设计 大作业 简化的PS
  16. 网络 :基础——路由器、交换机
  17. c语言中 dbl2str,c语言中FLT_DIG和DBL_DIG是什么意思?~
  18. python中ipo模型有,python ipo模型是指什么?-Python教程
  19. 控制用计算机论文,计算机在自动控制技术实践中的应用分析
  20. 比基尼女郎助威世界杯

热门文章

  1. 90年代微型计算机,版本控制如何在80年代和90年代的当今微型计算机上工作?
  2. UNIX网络编程——select函数的并发限制和 poll 函数应用举例
  3. 解决iex -S mix报错
  4. 10-排序4 统计工龄 (20 分)
  5. Leetcode 9. 回文数(Palindrome Number)
  6. Pythonic---------详细讲解
  7. 线段树(区间更改,区间查最值)模板
  8. POJ3264 【RMQ基础题—ST-线段树】
  9. MySQL Workbench导出数据库
  10. MyEclipse中SVN的使用方法