原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1838
题目是说给出一个矩阵,然后求下图类似的棋盘,边长最大的有几个。
输入01代表黑白。
然后这个问题是两个问题1.求出满足图形条件的最大边长,2.求出个数。
代码如下:
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
char G[2005][2005];
int dp[2005][2005];//以i,j为结尾的点所能达到的最大边长
int t,n,ans,maxlen;
int main()
{
cin>>t;
while(t--)
{
cin>>n;
getchar();
ans=0;
maxlen=0;
memset(dp,0,sizeof(dp));
for(int i=0; i<n; i++)//存图
scanf("%s",G[i]);
for(int i=0; i<n; i++)//边界处理,从顶上或者左边衍生出来的第一个边长必然是1
dp[i][0]=dp[0][i]=1;
for(int i=1; i<n; i++)
{
for(int j=1; j<n; j++)
{
if(G[i][j]==G[i-1][j-1]&&a