hdu 2859 (二维dp)
来源:互联网 发布:人工智能在工厂的使用 编辑:程序博客网 时间:2024/05/01 22:49
点击打开链接
题意:
给你一个n*n的矩阵,矩阵中只含有26个小写字母,求其中最大的对称矩阵的大小
当我们算到s[i][j]时,每次我们只需要将它上方的和右方的依次比较,看是否相同
注意这里不能只比较s[i-1][j]和s[i][j+1],因为可能出现不符合的情况,如
zaba
cbab
abbc
cacq
当我们比较到红色的b的时候,如果只比较与他相邻的两个即绿色的b,就会从dp[i-1][j+1]多+1,而显然蓝色的部分不同
当i!=0&&dp[i-1][j+1]>i-a时,dp[i][j]=dp[i-1][j+1]+1
当i!=0&&dp[i-1][j+1]<i-a(其中a为从当前位置找,找到的第一个不相等的x的位置,所以i-a就为最大的对称矩阵的长度)时,dp[i][j]=i-a;
当i==0时,dp[i][j]=1;
#include"stdio.h"#include"string.h"#define N 1001int dp[N][N];char s[N][N];int main(){ int n; int i,j; int a,b; int ans; while(scanf("%d",&n)!=-1&&n) { getchar(); for(i=0;i<n;i++) gets(s[i]); ans=0; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==0)dp[i][j]=1; else { a=i; b=j; while(s[a][j]==s[i][b]) { a--; b++; if(a<0||b>=n)break; } a=i-a; if(a>dp[i-1][j+1]) dp[i][j]=dp[i-1][j+1]+1; else dp[i][j]=a; } if(dp[i][j]>ans)ans=dp[i][j]; } } printf("%d\n",ans); } return 0;}
- hdu 2859 (二维dp)
- HDU 2859 Phalanx(二维DP)
- HDU 2859 Phalanx(二维dp)
- hdu 1227(二维dp)
- hdu 2159 FATE (二维DP)
- HDU 2159 FATE(二维dp背包)
- hdu 1176免费馅饼(二维dp)
- !HDU 1158 Employment Planning--DP--(二维)
- HDU 6170 Two strings (二维DP)
- hdu 2845 Beans--二维DP
- DP--二维背包--HDU - 2159
- DP--二维背包-- HDU - 3496
- hdu 5569(二维dp,水题)
- HDU-3480 Division 【DP+斜率优化(二维)】
- hdu 2845 (二维dp,同样的dp方程用两次)
- hdu 2829 Lawrence(二维DP+斜率优化)
- HDU 1081 To The Max 二维dp
- hdu 2159 dp(二维完全背包)
- ASP.NET母版缓存问题
- keepalived源码浅析——parser关键字解析
- UNIX环境高级编程——Linux系统调用列表
- 【2013Esri全球用户大会精彩案例】Horry Count GIS--南卡罗来那州霍里县企业级应用
- C++中各种数据类型的转换---很有用!
- hdu 2859 (二维dp)
- 代码添加ProgressBar 进度条
- IEEE 802.15.4 MAC协议能耗与时延均衡的GTS调度新算法设计
- H264 视频文件 帧格式 传输封装等 杂碎
- 物联网最新资料大全
- 关于ActiveMQ的一点总结
- GB2312 Unicode转换表
- 错误:QuerySyntaxException: unexpected token;
- tcp/ip协议族