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;
    }
    
  • 相关阅读:
    docker清理无用资源
    为什么不需要在 Docker 容器中运行 sshd
    转载:SQL注入演示demo
    docker方式安装prometheus主控
    promethus监控结构
    oracle的函数
    oracle冷备份后恢复
    oracle的冷备份
    oracle常用
    oracle的系统文件的查询
  • 原文地址:https://www.cnblogs.com/gugudesu/p/11159661.html
Copyright © 2011-2022 走看看