NYOJ - 37 回文字符串
来源:互联网 发布:知乎投资理财 编辑:程序博客网 时间:2024/06/06 00:34
- 描述
- 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
- 输入
- 第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000. - 输出
- 每行输出所需添加的最少字符数
- 样例输入
1Ab3bd
- 样例输出
2
这是一道DP题目,思路是先创造一个与输入字符串相反的字符串,然后求出最长公共子字符串的长度,再用字符串长度减去即可。
相当于在对应的位置进行一次操作【增添或者删除】
代码如下:
#include <cstdio>#include <cstring>int ans[1005][1005];char s1[1005], s2[1005];int main(){ int T; scanf("%d", &T); while (T--) { scanf("%s", s1); memset(ans, 0, sizeof(ans)); int len1 = strlen(s1); for (int i = 0; i < len1; ++i) s2[len1 - i - 1] = s1[i]; for (int i = 1; i <= len1; ++i) { for (int j = 1; j <= len1; ++j) { if (s1[i-1] == s2[j-1]) ans[i][j] = ans[i-1][j-1] + 1; else ans[i][j] = ans[i-1][j] > ans[i][j-1] ? ans[i-1][j] : ans[i][j-1]; } } printf("%d\n", len1 - ans[len1][len1]); } return 0;}
0 0
- NYOJ 37 回文字符串
- nyoj 37 回文字符串
- nyoj-37-回文字符串
- nyoj 37 回文字符串
- NYOJ 37 回文字符串
- 回文字符串(nyoj 37)
- Nyoj 37 回文字符串
- Nyoj 37 回文字符串
- NYOJ 37 回文字符串
- nyoj-37 回文字符串
- NYOJ 37 回文字符串
- NYOJ 37 回文字符串
- NYOJ 37 回文字符串
- 回文字符串(NYOJ 37)
- nyoj 37 回文字符串
- nyoj 37 回文字符串
- NYOJ 37 回文字符串
- nyoj 37 回文字符串
- laravel 学习3 文件存储
- swift 搭建tabbarcontroller
- Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签
- Android主题换肤实现
- swift navgationcontroller的使用
- NYOJ - 37 回文字符串
- Java集合框架List,Map,Set等全面介绍
- (Java)用一个“点”类表示三维空间的点,计算该点距离某点的距离
- 丑数
- 类模板
- nyoj 722数独(深搜)
- angular指令详细配置
- 一个不错的机器视觉库 SimpleCV: a kinder, gentler machine vision library
- 数组类运算的实现