HDU - 2859 Phalanx(dp)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU - 2859 Phalanx(dp)相关的知识,希望对你有一定的参考价值。

题目链接:点我点我

题意:求以左下到右上的最大对称矩阵。

题解:对于每个点(以它为一个矩阵的最左下角),判断一下它右边的第一个点和上面的第一个点,如果相同就再往下判断下去,直到不相同,取当前位置能拿到的值。

如果一直相同,说明这个最左下脚的点能够加入进去成为一员,+1呗。

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 const int N=1111;
 6 char map[N][N];
 7 int dp[N][N];
 8 
 9 int main(){
10     int n;
11     
12     while(cin>>n&&n){
13         int ans=0;
14         for(int i=1;i<=n;i++)
15         for(int j=1;j<=n;j++)
16         cin>>map[i][j];    
17         
18         if(n==1) {cout<<1<<endl;continue;}
19         for(int i=1;i<=n;i++) dp[i][n]=dp[1][i]=1;
20         
21         for(int i=2;i<=n;i++){
22             for(int j=1;j<n;j++){
23                 int idx=0;
24                 for(int k=1;k<=dp[i-1][j+1];k++){
25                     if(map[i-k][j]!=map[i][j+k]) {dp[i][j]=k;idx=1;break;}
26                 }
27                 if(!idx) dp[i][j]=dp[i-1][j+1]+1;
28                 ans=max(ans,dp[i][j]);
29             }    
30         }    
31         
32         cout<<ans<<endl;
33     }
34     
35 }

 

以上是关于HDU - 2859 Phalanx(dp)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 2859—Phalanx(DP)

HDU 2859 Phalanx(二维DP)

HDU - 2859 Phalanx(dp)

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

HDU 2859 Phalanx

hdu 2859 Phalanx