博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT A1030 动态规划
阅读量:5771 次
发布时间:2019-06-18

本文共 640 字,大约阅读时间需要 2 分钟。

clipboard.png

这道题是动态规划几大问题的其中一种,为最长回文子串问题;

动态规划个人来说,觉得最重要的就是建立状态转移方程。对于方程变量,我认为最重要的是有几个构成的关键变量;

对于这道题,我们着手于i~j个字符,所以关注点在于i和j,所以我们建立一个二维矩阵来保存动态规划途中的计算值。对于dpi,其值为1时,意为i-j的字串是回文子串,为其他值则不是;

对于状态转移方程,我们可以这样想:对于一个回文子串,其子串也是回文子串,所以就有方程转移的定律:

dpi=dpi+1

接下来就是如何遍历;

对于遍历,我们一定要保证从边界开始,并且现有计算状态必须建立在已有建立状态之上。由于转换方程的特殊性,i,j两个坐标都像两边扩散,所以我们可以根据L,也就是子串的长度来进行计算;
先将单个字符相应的值置为1,然后L=2.....至L=n;在途中记录子串的长度;

代码如下所示:

#include
#include
#include
#include
#include
using namespace std;const int maxn=1010;string data;int matrix[maxn][maxn];int main(){ getline(cin,data); int len=data.size(); for(int i=0;i

转载地址:http://qraux.baihongyu.com/

你可能感兴趣的文章
Node.js 2017企业用户调查结果发布
查看>>
“软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
查看>>
JAVA的优势就是劣势啊!
查看>>
ELK实战之logstash部署及基本语法
查看>>
帧中继环境下ospf的使用(点到点模式)
查看>>
BeanShell变量和方法的作用域
查看>>
LINUX下防恶意扫描软件PortSentry
查看>>
由数据库对sql的执行说JDBC的Statement和PreparedStatement
查看>>
springmvc+swagger2
查看>>
软件评测-信息安全-应用安全-资源控制-用户登录限制(上)
查看>>
cacti集成
查看>>
Android中的Cursor
查看>>
我的友情链接
查看>>
Java Web Application 自架构 一 注解化配置
查看>>
如何 debug Proxy.pac文件
查看>>
Python 学习笔记 - 面向对象(特殊成员)
查看>>
Kubernetes 1.11 手动安装并启用ipvs
查看>>
Puppet 配置管理工具安装
查看>>
Bug多,也别乱来,别被Bug主导了开发
查看>>
sed 替换基础使用
查看>>