nyoj_37_回文字符串_201403121649
2014-03-12 17:22
369 查看
回文字符串
时间限制:3000 ms | 内存限制:65535 KB难度:4
描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
输入第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000.输出每行输出所需添加的最少字符数样例输入
1 Ab3bd
样例输出
2
来源IOI 2000上传者hzyqazasdf
思路:将序列翻转,求最长公共子序列,再用长度减去公共长度
#include <stdio.h> #include <string.h> char str1[1010],str2[1010]; int s[1010][1010]; int main() { int T; scanf("%d",&T); while(T--) { int i,j,len; memset(s,0,sizeof(s)); scanf("%s",str1); len=strlen(str1); for(i=len-1,j=0;i>=0;i--) str2[j++]=str1[i]; for(i=0;i<len;i++) { for(j=0;j<len;j++) { if(str2[j]==str1[i]) s[i+1][j+1]=s[i][j]+1; else if(s[i+1][j]>s[i][j+1]) s[i+1][j+1]=s[i+1][j]; else s[i+1][j+1]=s[i][j+1]; } } printf("%d\n",len-s[len][len]); } return 0; }
View Code
相关文章推荐
- nyoj 36 最长公共子序列 & nyoj 37 回文字符串
- NYOJ 37 回文字符串(记忆化搜索)
- 回文字符串(nyoj_37)
- NYOJ 37 回文字符串 (lcs最长公共子序列)
- nyoj--37--回文字符串(动态规划)
- nyoj--37 回文字符串(dp)
- nyoj 37 回文字符串(经典dp五)
- NYOJ-37-回文字符串【LCS】
- nyoj 37题 回文字符串 (dp)
- nyoj--37--回文字符串(动态规划)
- NYOJ 37 回文字符串
- 回文字符串(NYOJ 37)
- NYOJ 题目37 回文字符串(动态规划)
- NYOJ-37 回文字符串 —— LCS变形
- NYOJ-37-回文字符串(最长公共子序列)
- 【又见LCS】NYOJ-37 回文字符串
- NYOJ 37 回文字符串
- nyoj 37 回文字符串
- nyoj 37 回文字符串 【lcs&&dp】
- nyoj-37-回文字符串