30分求助
查看原帖
30分求助
436107
Creeper_l楼主2022/8/31 11:00
#include<bits/stdc++.h>
using namespace std;
int l,q,ans; 
char a[2005][2005];
int down(int x,int y)
{
	int len = 1;
	if(y == 1 || y == l)
	{
		return 1;
	} 
	for(int i = 1;;i++)
	{
		if(y + i == l + 1 || y - i == 0)
		{
			return len;
		}
		else if(a[x][y + i] != a[x][y - i])
		{
			return len;
		}
		else
		{
			len += 2;
		}
	}
}
int cross(int x,int y)
{
	int len = 1;
	if(x == 1 || x == l)
	{
		return 1;
	} 
	for(int i = 1;;i++)
	{
		if(x + i == l + 1 || x - i == 0)
		{
			return len;
		}
		else if(a[x + i][i] != a[x - i][y])
		{
			return len;
		}
		else
		{
			len += 2;
		}
	}
}
int MAXN(int a,int b)
{	
    if(a >= b)
	{
		return a;
	}    
    return b;
}
int main()
{
    cin >> l >> q;
    for(int i = 1;i <= l;i++)
    {
    	for(int j = 1;j <= l;j++)
    	{
    		cin >> a[i][j]; 
		}
	}
	for(int i = 1;i <= q;i++)
	{
		int x,y;
    	cin >> x >> y;
    	ans = MAXN(cross(x,y),down(x,y));
    	cout << ans;	
		if(i != q)
		{
			cout << endl;
		}
	}
	return 0;
}
2022/8/31 11:00
加载中...