题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859

题目大意:对称矩阵是这样的矩阵,它由“左下到右”线对称。 相应位置的元素应该相同。 例如,这里是3 * 3对称矩阵:

     cbx
     cpb
     zcc

给出任意的n*n的矩阵找出里面最大的对称的子矩阵,输出大小。

解题思路:有这样一个规律,对于每个字符看该列以上和该行右侧的字符匹配量,如果匹配量大于右上角记录下来的矩阵大小,就是右上角的数值+1,否则就是这个匹配量。根据这个规律,把n*n的点都遍历以便一,直推下去找出最大值就可以了。

代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e3+;
char map[N][N];
int dp[N][N]; int main(){
int n;
while(scanf("%d",&n)&&n){
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++){
getchar();
for(int j=;j<=n;j++){
scanf("%c",&map[i][j]);
}
}
int ans=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(i==||j==n){
dp[i][j]=;
continue;
}
int t1=i,t2=j,cnt=;
while(t1>=&&t2<=n&&map[t1][j]==map[i][t2]){
t1--;
t2++;
cnt++;
}
if(cnt>=dp[i-][j+]+)
dp[i][j]=dp[i-][j+]+;
else
dp[i][j]=cnt;
ans=max(ans,dp[i][j]);
}
}
printf("%d\n",ans);
}
}

最新文章

  1. 向Java技术进军
  2. Android中如何查看内存
  3. Network Instructions in Linux
  4. Oracle存储过程中临时表的使用技巧
  5. JS引用另外JS文件的顺序问题。
  6. Queue、进程、线程、协程
  7. js和jquery获取子元素
  8. 快速用springmvc搭建web应用-超越昨天的自己系列(10)
  9. UML九种图汇总
  10. 如何配置adb环境变量
  11. ios屏幕怎么投屏到电脑显示器
  12. 数据库03_SQL语句
  13. NDK环境搭建方法1
  14. JavaScript监听手机物理返回键的两种解决方法
  15. 《DSP using MATLAB》Problem 3.3
  16. 关于StringBuffe()长度和初始化长度的问题归纳
  17. PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknow.....
  18. Windows 64位下安装Redis教程
  19. Android APP架构设计——MVP的使用示例
  20. 学会了vim中的自动补全功能

热门文章

  1. 【Python简介】
  2. 【loj6179】Pyh的求和
  3. Web之CGIC的介绍与使用20171229
  4. 2017 Multi-University Training Contest - 1
  5. Kruskal-Wallis test
  6. Java面试题:多继承
  7. nginx 与 tomcat 组合搭建web服务
  8. NOIP 2014 提高组 Day1
  9. [洛谷P3228] [HNOI2013]数列
  10. 原生JS实现省市区(县)三级联动选择