码迷,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
迷上了代码!