题意:求最大对称子矩阵
思路:个人感觉有一点点偏记忆华搜索,有点像数塔一样,但还是没有想到,主要是没有仔细读题,总以为是某次网赛时的最大子矩阵问题
代码:
#include <bits/stdc++.h> using namespace std; const int maxn=1005; char mp[maxn][maxn]; int dp[maxn][maxn]; int n; int main() { while(~scanf("%d",&n)&&n){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>mp[i][j]; } } memset(dp,0,sizeof(dp)); int ans=-1,as; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i==0||j==n-1)dp[i][j]=1; else{ as=0; int x=i-1,y=j+1; while(mp[x][j]==mp[i][y]&&x>=0&&y<n){ x--,y++; } as=i-x; dp[i][j]=min(as,dp[i-1][j+1]+1); } ans=max(ans,dp[i][j]); } } // for(int i=0;i<n;i++){ // for(int j=0;j<n;j++){ // printf("%d ",dp[i][j]); // } // puts(""); // } printf("%d\n",ans); } return 0; }