悬关RE求助
查看原帖
悬关RE求助
765461
zhangmingsheng3521楼主2023/10/1 13:30

rt.下面这一段东西加上就RE了

for (int i=-1;i<=1;i++)
	{
		for (int j=-1;j<=1;j++)
		{
			avail[x+i][y+j]=true;
		}
	}

dfs代码如下:

#include"bits/stdc++.h"
using namespace std;
int m,n,maxx;
int maps[9][9];
bool avail[9][9];
void dfs(int x,int y,int ans)
{
	avail[x][y]=false;
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=m;j++)
		{
			if (avail[i][j])
			{
				dfs(i,j,ans);
			}
		}
	}
	for (int i=-1;i<=1;i++)
	{
		for (int j=-1;j<=1;j++)
		{
			avail[x+i][y+j]=false;
		}
	}
    ans+=maps[x][y];
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=m;j++)
		{
			if (avail[i])
			{
				dfs(i,j,ans);
			}
		}
	}
	if (ans>maxx)
	{
		maxx=ans;
	}
	for (int i=-1;i<=1;i++)
	{
		for (int j=-1;j<=1;j++)
		{
			avail[x+i][y+j]=true;
		}
	}
	avail[x][y]=false;
	return;
}
int main()
{
	int T;
	scanf("%d",&T);
	for (int i=1;i<=T;i++)
	{
		maxx=0;
		memset(maps,0,sizeof(maps));
		memset(avail,false,sizeof(avail));
		scanf("%d%d",&n,&m);
		for (int j=1;j<=n;j++)
		{
			for (int k=1;k<=m;k++)
			{
				avail[j][k]=true;
			}
		}
		for (int j=1;j<=n;j++)
		{
			for (int k=1;k<=m;k++)
			{
				scanf("%d",&maps[j][k]);
			}
		}
		dfs(1,1,0);
		printf("%d",maxx);
		printf("\r\n");
	}
	return 0;
}
2023/10/1 13:30
加载中...