zoukankan      html  css  js  c++  java
  • hdu 2859 Phalanx

    题目描述

    题意:

    给你一个n*n矩阵,你求出最大对称矩阵。
    比如:

    a b x

    c y b

    z c a

    当给的矩阵比较大的时候

    a a a a a x

    a a a a x a

    a a a x a a ans=3

    c a x a a a 中断

    a x a a a a

    x a a a a a

    所以说我们想到可以用转移方程来解决这个问题

    在稿纸上再画几笔我们可以得到:

    (x为当前求得对称矩阵的边界,i为当前位置)

    dp[i][j]=1 (i==0)

    dp[i][j]=dp[i-1][j+1]+1; i-x>dp[i-1][j+1]

    dp[i][j]=i-x;

    于是代码为下

    
    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN=1e3+5;
    int n;
    char a[MAXN][MAXN];
    
    int dp[MAXN][MAXN];
    int main()
    {
      while(~scanf("%d",&n)&&n)
      {
        int ans=0;
        memset(a,'',sizeof(a));
        memset(dp,0,sizeof(dp));
        for(int i=0;i<n;i++)scanf("%s",a[i]);
        for(int i=0;i<n;i++)
        {
          for(int j=0;j<n;j++)
          {
            if(i==0)dp[i][j]=1;
            else{
              int x,y;
              x=i,y=j;
              while(a[x][j]==a[i][y])
              {
                x--,y++;
                if(x<0||y>=n)break;
              }
              if(i-x>dp[i-1][j+1])dp[i][j]=dp[i-1][j+1]+1;
              else dp[i][j]=i-x;
            }
            ans=max(dp[i][j],ans);
          }
        }
        printf("%d
    ",ans);
      }
      return 0;
    }
    
  • 相关阅读:
    GitHub 实现多人协同提交代码并且权限分组管理
    前端第一篇文章-http标准
    介绍Android电量
    音频编码格式
    PPT
    Word
    HTML 之 JavaScript
    HTML 之 CSS
    HTML 之 HTTP 协议(请求协议以及响应协议)
    HTML 之 标签
  • 原文地址:https://www.cnblogs.com/gugudesu/p/11159661.html
Copyright © 2011-2022 走看看