zoukankan      html  css  js  c++  java
  • HDU2859

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

    AC思路:(思路来源于kuangbin,甚至做法也跟kuangbin大同小异,所以可以将本文看成是对于这篇博文(http://www.cnblogs.com/kuangbin/p/3228215.html)的一个评论。。。)

      用dp[i][j]代表以点(i,j)为左下角的最大的对称矩阵的边长,计算从该点出发向上和向右走,字符相等的最大长度x,如果长度x大于dp[i-1][j+1],则dp[i][j] = dp[i-1][j+1] +1,否则dp[i][j]就只是x。

      具体看代码比较好懂。

    AC代码:

     1 #include <cstring>
     2 #include <cstdio>
     3 using namespace std;
     4 const int maxn=1000+10;
     5 char st[maxn][maxn];
     6 int dp[maxn][maxn];
     7 int main()
     8 {
     9     int n;
    10     while(scanf("%d",&n)==1&&n){
    11         for(int i=0;i<n;i++)
    12             scanf("%s",st[i]);
    13         memset(dp,0,sizeof(dp));
    14         int ans=1;
    15         for(int i=0;i<n;i++)
    16             for(int j=0;j<n;j++){
    17                 if(i==0||j==n-1){
    18                     dp[i][j]=1;
    19                 }
    20                 else{
    21                     int ti=i,tj=j;
    22                     while(ti>=0&&tj<n&&st[ti][j]==st[i][tj]){
    23                         ti--;
    24                         tj++;
    25                     }
    26                     if(tj-j>=dp[i-1][j+1]+1)  dp[i][j]=dp[i-1][j+1]+1;
    27                     else    dp[i][j]=tj-j;
    28                 }
    29                 if(dp[i][j]>ans)    ans=dp[i][j];
    30             }
    31         printf("%d
    ",ans);
    32     }
    33     return 0;
    34 }

      

    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    MVC模板页
    MVC Razor 语法(转)
    Code First 更新数据库结构
    mvc5 HTML Helper
    mvc5经典教程再补充。。
    mvc5入门,经典教程。。
    关于“以管理员身份运行”。。。
    windows8无脑式双系统安装教程(转)
    vs2010 无法连接到asp.net development server
    VMware虚拟机下安装RedHat Linux 9.0
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/7301690.html
Copyright © 2011-2022 走看看