设为首页 加入收藏

TOP

hdu2859---Phalanx
2015-07-20 17:16:37 来源: 作者: 【 】 浏览:2
Tags:hdu2859---Phalanx

Problem Description
Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC.
A phalanx is a matrix of size n*n, each element is a character (a~z or A~Z), standing for the military branch of the servicemen on that position.
For some special requirement it has to find out the size of the max symmetrical sub-array. And with no doubt, the Central Military Committee gave this task to ALPCs.
A symmetrical matrix is such a matrix that it is symmetrical by the “left-down to right-up” line. The element on the corresponding place should be the same. For example, here is a 3*3 symmetrical matrix:
cbx
cpb
zcc

Input
There are several test cases in the input file. Each case starts with an integer n (0

/*************************************************************************
    > File Name: hdu2859.cpp
    > Author: ALex
    > Mail: zchao1995@gmail.com 
    > Created Time: 2015年02月14日 星期六 16时31分45秒
 ************************************************************************/

#include  #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
          
            #include 
           
             #include 
            
              #include 
             
               using namespace std; const double pi = acos(-1); const int inf = 0x3f3f3f3f; const double eps = 1e-15; typedef long long LL; typedef pair 
              
                PLL; const int N = 1010; int dp[N][N]; char mat[N][N]; int main () { int n; while (~scanf("%d", &n), n) { for (int i = 1; i <= n; ++i) { scanf("%s", mat[i] + 1); for (int j = 1; j <= n; ++j) { dp[i][j] = 1; } } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { int m = dp[i - 1][j + 1]; bool flag = true; int x; for (int k = 1; k <= m; ++k) { if (mat[i - k][j] == mat[i][j + k]) { continue; } else { x = k; flag = false; break; } } if (!flag) { dp[i][j] = x; } else { dp[i][j] = m + 1; } } } int ans = -1; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { ans = max (ans, dp[i][j]); } } printf("%d\n", ans); } return 0; }
              
             
            
           
          
         
        
       
      
     
    
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ1300 Door Man 欧拉回路的判断 下一篇uva 10954 Add All(排序)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)
·想要自学数据分析, (2025-12-27 02:49:14)
·Java 集合框架 - 菜 (2025-12-27 02:19:36)
·Java集合框架最全详 (2025-12-27 02:19:33)