nyoj 37 回文字符串
来源:互联网 发布:少儿编程书籍 编辑:程序博客网 时间:2024/05/13 08:52
- 输入
- 第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000. - 输出
- 每行输出所需添加的最少字符数
- 样例输入
1Ab3bd
- 样例输出
2
思路:就是求最长能够利用的公共子序列,不能利用的再进行字符串填充。
方法: LCS 最长公共子序列
#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>using namespace std;#define M 1002char a[M],b[M];int len;void myreverse(){ for(int i=0;i<len;i++) b[i]=a[len-1-i]; b[len]='\0';}//求最长公共子序列int LCS(char *a,char *b){ int vis[M][M]; memset(vis,0,sizeof(vis)); for(int i=1;i<=len;i++) for(int j=1;j<=len;j++) { if(a[i-1]==b[j-1]) vis[i][j]=vis[i-1][j-1]+1; else vis[i][j]=max(vis[i-1][j],vis[i][j-1]); } return vis[len][len];}int main(){ int n; scanf("%d",&n); getchar(); while(n--) { scanf("%s",a); len=strlen(a); myreverse(); //printf("%s\n",b); int maxlen=LCS(a,b); printf("%d\n",len-maxlen); } 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 回文字符串
- java基础之继承、抽象、接口
- 【matlab】亮度变换
- 学习和应用社会网络分析,为什么要选用Pajek
- ogg 添加链路
- NIO与Netty的Channel组件
- nyoj 37 回文字符串
- 一天
- Flash As3.0 游戏开发小结
- JNDI之我见
- 识别图书ISBN号并输出查询结果的示例
- C++入门笔记(四)数组、指针与字符串
- oracle 11g stream
- memory数组初始化过程
- 窗口、视口、屏幕显示详解