码迷,mamicode.com
首页 > 其他好文 > 详细

[2016-03-29][HDU][2859][Phalanx]

时间:2016-04-01 23:18:02      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

  • 时间:2016-03-29 15:53:01 星期二

  • 题目编号:[2016-03-29][HDU][2859][Phalanx]

  • 分析:dp[i][j]表示以 (i,j)为左下角

    1. #include <cstdio>
    2. #include <algorithm>
    3. using namespace std;
    4. const int maxn = 1000 + 10;
    5. char a[maxn][maxn];
    6. int dp[maxn][maxn],ans,n;
    7. void func(int x,int y){
    8. int maxl = min(x,n - y);
    9. int i;
    10. for(i = 0;i <= maxl;++i){
    11. if(a[x - i][y] != a[x][y + i]) break;
    12. }
    13. if(i >= dp[x - 1][y + 1] + 1){
    14. dp[x][y] = dp[x - 1][y + 1] + 1;
    15. }else dp[x][y] = i;
    16. if(dp[x][y] > ans) ans = dp[x][y];
    17. }
    18. int main(){
    19. while(~scanf("%d",&n) && n){
    20. for(int i = 1;i <= n ; ++i){
    21. scanf("%s",a[i] + 1);
    22. }
    23. ans = 0;
    24. for(int i = 1; i <= n ; ++i)
    25. for(int j = n ;j > 0;--j)
    26. func(i,j);
    27. printf("%d\n",ans);
    28. }
    29. return 0;
    30. }




[2016-03-29][HDU][2859][Phalanx]

标签:

原文地址:http://www.cnblogs.com/qhy285571052/p/5346501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!