【51nod】1154 回文串划分
来源:互联网 发布:2015电商彩妆销售数据 编辑:程序博客网 时间:2024/06/05 02:29
题目:
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1154
扫描回文串的每个中心,寻找他的回文串,用DP来记录更新;
状态方程dp[j]=min(dp[j],dp[k-1]+1);
看前面一段用最优的,后面一段是回文+1。
代码:
//状态方程dp[j]=min(dp[j],dp[k-1]+1); #include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int MAXN=5010;const int inf=0x3f3f3f3f;char a[MAXN];int dp[MAXN];int main(){ int i,j,k,n; cin>>a+1; n=strlen(a+1); //初始化,比较最小 for(i=1;i<=n;i++) { dp[i]=inf; } //i控制从中心开始,判断是否是回文; for(i=1;i<=n;i++) { for(j=i,k=i;j<=n&&k>0;j++,k--) { //j从自身开始判断再往后,k往前确定字符;回文为奇数时 if(a[j]==a[k]) dp[j]=min(dp[j],dp[k-1]+1); else break; } for(j=i+1,k=i;j<=n&&k>0;j++,k--) { //j从自身后一位开始判断再往后;回文为偶数时 if(a[j]==a[k]) dp[j]=min(dp[j],dp[k-1]+1); else break; } } cout<<dp[n]<<endl; return 0;}
阅读全文
0 0
- 51nod 1154 回文串划分 (DP)
- 51nod 1154:回文串划分
- 51nod 1154 回文串划分
- 51Nod 1154 回文串划分
- 51 Nod 1154 回文串划分
- 51nod 1154 回文串划分
- 【dp】51nod 1154 回文串划分
- 51nod-1154-回文串划分
- 【51nod】1154 回文串划分
- 51nod 1154 回文串划分
- 51nod 1154回文串划分 dp+递推
- 51Nod-1154-回文串划分
- 【51Nod】1154 - 回文串划分(dp)
- 51NOD 1154 回文串划分 【DP+Manacher】
- 51nod 1154 回文串划分(dp)
- 1154 回文串划分
- 1154 回文串划分
- 51nod1154回文串划分
- plsql安装与配置
- 215. Kth Largest Element in an Array
- 第三章 循环 样式操作
- Java Web学习总结(39)——JavaEE常用的Jar详解
- vim命令
- 【51nod】1154 回文串划分
- 顺序表———学生成绩表
- 最大的位或 HDU
- 文章标题
- MySQL烂笔头记忆2
- 运算符重载
- 数据库之python+MySQL基本操作
- Effective C++笔记简易总结以及程序演示
- linux网络编程-----TCP连接及相关问题