【题目链接】

回文字符串

时间限制:3000 ms  |  内存限制:65535 KB
难度:4

描述
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
输入
第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000.
输出
每行输出所需添加的最少字符数
样例输入
1
Ab3bd
样例输出
2

【思路】

  由之前做过的几题LCS,不难看出,这道题的答案就是,将输入的字符串与其反转后的字符串求两者的LCS,然后字符串长度-LCS值便是答案。

  LCS博客连接

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 #define max(a,b) a > b ? a : b
 5 const int maxn = 1001;
 6 int dp[maxn][maxn];
 7 char s1[maxn],s2[maxn];
 8 int main(){
 9     int n;
10     cin >> n;
11     while(n--){
12         int i,j;
13         cin >> s1;
14         int len = strlen(s1);
15         for(i = len - 1,j = 0;i >= 0;i--,j++)
16             s2[j] = s1[i];
17         for(i = 1;i <= len;i++){
18             for(j = 1;j <= len;j++){
19                 if(s1[i - 1] == s2[j - 1]){
20                     dp[i][j] = dp[i - 1][j - 1] + 1;
21                 }
22                 else
23                     dp[i][j] = max(dp[i][j - 1],dp[i - 1][j]);
24             }
25         }
26         cout << len - dp[len][len] << endl;
27     }
28     return 0;
29 }
30  

【注意】

  本来这题应该一次水过的,但是提交编译错误了1次,原因是一个代码中同时用了 scanf 与 cin,cout,同时用编译器不会报错,但是往往忘记加两者不同的头文件,所以以后要注意这个,尽量统一用一种输入输出的方法。

  不然,影响拿一血啊~

转载于:https://www.cnblogs.com/zhengbin/p/4467697.html

【又见LCS】NYOJ-37 回文字符串相关推荐

  1. NYOJ 37 回文字符串

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

  2. nyist oj 37 回文字符串 (动态规划经典)

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

  3. NYOJ 回文字符串

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

  4. 51nod 1092 回文字符串【LCS】

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

  5. 51nod 1092 回文字符串

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

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

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

  7. 回文字符串(51Nod-1092)

    题目 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符串都可以通过向中间添加一些字符,使之变为回文字符串. 例如:abbc 添加2个字符可以变为 acbbca,也可以 ...

  8. python生成回文字符串_回文字符串最长回文子串和子序列 - Python

    Palindrome 回文字符串就是指从前往后和从后往前读,都是一样的,比如"aabcbaa". 注意区分子串和子序列,子串是连续的,子序列可以不连续 题型1:判断字符串是否为回文 ...

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

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

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

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

最新文章

  1. 不到 100 行 Python 代码教你做出精美炫酷的可视化大屏
  2. 【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件
  3. 常用命令-临时记录!
  4. 【Flutter】Flutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )
  5. Day2-springmvc初解
  6. 对计算机描述错误的是什么意思,下列对计算机特点的描述中错误的是:________。...
  7. 如何使用firebug
  8. 【Mybatis】分割字符串
  9. 对jvm 同步锁的理解
  10. [leetcode] 95. 不同的二叉搜索树 II
  11. Laravel配置DingoAPI和JWT
  12. 答题活动助手小程序更新记录
  13. mysql 主键 sql语句_Mysql主键相关的sql语句集锦
  14. CSS margin 用法
  15. 采药(洛谷-P1048)
  16. C语言 TCP并发服务器
  17. fedora28/29/32/centos ipmi 登录解决
  18. SQL语句执行顺序及建议
  19. 用Python帮你选注双色球号码
  20. 制作3D动漫模型原来这么简单,会建模还能拿高薪?

热门文章

  1. 多人麻将源码 html5,新版大众麻将 H5版
  2. 【UVA1339】古老的密码(巧妙思路+(q)sort降序排列的三种方法)
  3. hdoj1159:Common Subsequence(dp基础题-最长公共子序列LCS)
  4. java 链接kafka单机版_kafka单机环境搭建及其基本使用
  5. STM32——库函数版——矩阵按键程序
  6. 架构师资源汇总 从入门到精通 将近20年的工作经验毫无保留分享
  7. 算法:Longest Valid Parentheses(最长有效的括号)
  8. mysql8多表连接_MySQL 多个表的 连接
  9. 446.等差数列划分II-子序列
  10. 117.填充同一层的兄弟节点II