[CODEVS1520]回文字符串(dp)
来源:互联网 发布:数据库置疑是什么意思 编辑:程序博客网 时间:2024/05/04 09:57
题目描述
传送门
题解
一道傻逼题竟然让我WA好多次。codevs不能用gets真是吃屎= =
设f(i,j)表示i~j这一段最少插入多少个。那么
注意以上两个条件是不可以if和else的,也就是说,无论满不满足s[i]=s[j]都要取min,因为你无法保证最优解是在哪里取到的。
初始化
刚开始f(i,i+1)漏掉了s[i]!=s[i+1]的情况。果然我还是太傻逼。
代码
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define N 1005char s[N];int n,f[N][N];void in(){ char ch=getchar(); while (ch<'0'&&ch>'z') ch=getchar(); while (ch>='0'&&ch<='z') s[++n]=ch,ch=getchar();}int main(){ in(); memset(f,127,sizeof(f)); for (int i=1;i<=n;++i) f[i][i]=0; for (int i=1;i<n;++i) if (s[i]==s[i+1]) f[i][i+1]=0; else f[i][i+1]=1; for (int len=3;len<=n;++len) for (int l=1;l<=n-len+1;++l) { int r=l+len-1; if (s[l]==s[r]) f[l][r]=min(f[l][r],f[l+1][r-1]); f[l][r]=min(f[l][r],f[l+1][r]+1); f[l][r]=min(f[l][r],f[l][r-1]+1); } printf("%d\n",f[1][n]);}
0 0
- [CODEVS1520]回文字符串(dp)
- [codevs1520]回文字符串(dp)
- codevs1520 回文字符串
- nyoj 37题 回文字符串 (dp)
- POJ1159回文字符串(DP+滚动数组)
- 【codevs 1520】回文字符串(dp)
- NYOJ 37. 回文字符串(DP)
- NYOJ - 回文字符串(DP)
- DP-回文字符串匹配
- uva10739(DP 回文字符串)
- 【DP入门】回文字符串
- DP 回文字符串 南洋理工
- nyoj 37 回文字符串 【DP】
- nyoj--37 回文字符串(dp)
- DP问题 制造回文字符串
- Partitioning by Palindromes(回文串-->字符串DP)
- POJ1159 Palindrome(dp加最少字母构成回文字符串)
- 51NOD1092—— 回文字符串(区间dp)
- CSS尺寸单位 % px em rem 详解
- 返回按钮相关(有侧滑)以及右侧按钮
- 服务器开发之极验证
- 在windows下如何快速搭建web.py开发框架
- 一周知识点回顾
- [CODEVS1520]回文字符串(dp)
- 浮点数输出
- java.util.ArrayList<E>
- PIL (Python Imaging Library) 教程
- js之定时器方法总结
- 10-18
- 响应式网页开发注意事项
- JSP 标准标签库(JSTL)
- c/c++ 字符串处理函数汇总