为什么RE了,在本地运行没问题啊
查看原帖
为什么RE了,在本地运行没问题啊
383782
StarPatrick楼主2021/3/27 14:01
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n, m, a[1505][1505], dp[1505][1505], d[1505][1505], ans;
int dfs(int x, int y)
{
	if (a[x][y]==0)
	{
		return 0;
	}
	if (dp[x][y])
	{
		return dp[x][y];
	}
	int MAX = 1, q = 0;
	for (int p=1;p<=min(n-x, m-y);p++)
	{
		if (a[x][y+p]==((p+1)%2)&&a[x+p][y]==((p+1)%2))
		{
			q = p+1;
		}
		else
		{
			break;
		}
	}
	MAX = max(MAX, min(1+dfs(x+1, y+1), q));
	return dp[x][y]=MAX;
}
int f(int x, int y)
{
	if (a[x][y]==1)
	{
		return 0;
	}
	if (d[x][y])
	{
		return d[x][y];
	}
	int MAX = 1, q = 0;
	for (int p=1;p<=min(n-x, m-y);p++)
	{
		if (a[x][y+p]==(p%2)&&a[x+p][y]==(p%2))
		{
			q = p+1;
		}
		else
		{
			break;
		}
	}
	MAX = max(MAX, min(1+f(x+1, y+1), q));
	return d[x][y]=MAX;
}
int main()
{
	cin>>n>>m;
	for (int p=1;p<=n;p++)
	{
		for (int k=1;k<=m;k++)
		{
			cin>>a[p][k];
		}
	}
	for (int p=1;p<=n;p++)
	{
		for (int k=1;k<=m;k++)
		{
			ans = max(ans, dfs(p, k));
			ans = max(ans, f(p, k));
		}
	}
	cout<<ans;
	return 0;
}
2021/3/27 14:01
加载中...