16分出第一个全红QAQ
查看原帖
16分出第一个全红QAQ
666940
Wufei_OvO楼主2024/1/27 18:32

代码如下:

但感觉没问题qwq

#include <bits/stdc++.h>
using namespace std;
const int Maxn = 6 + 3;
int Num[Maxn][Maxn];
bool Vis[Maxn][Maxn];
int N,M;
int Sum;
int Con[21];
void Mum()
{
	for(int i = 1;i <= N;i++)
	{
		for(int j = 1;j <= M;j++)
		{
			Vis[i][j] = false;
		}
	}
}
void DFS(int X,int Y)
{
	if(X < 1 || X > N || Y < 1 || Y > M)
	{
		return ;
	}
	Sum += Num[X][Y];
	for(int i = -1;i <= 1;i++)
	{
		for(int j = -1;j <= 1;j++)
		{
			int UX = X + i,UY = Y + j;
			if(UX < 1 || UX > N || UY < 1 || UY > M)
			{
				continue;
			}
			Vis[UX][UY] = true;
		}
	}
	for(int i = 1;i <= N;i++)
	{
		for(int j = 1;j <= M;j++)
		{
			if(!Vis[i][j])
			{
				DFS(i,j);
			}
		}
	}
}
int main()
{
	int T;
	int Number = 0;
	cin >> T;
	for(int u = 0;u < T;u++)
	{
		int Cont = -1;
		cin >> N >> M;
		for(int i = 1;i <= N;i++)
		{
			for(int j = 1;j <= M;j++)
			{
				cin >> Num[i][j];
			}
		}
		
		for(int i = 1;i <= N;i++)
		{
			for(int j = 1;j <= M;j++)
			{
				Sum = 0;
				Mum();
				DFS(i,j);
				Cont = max(Sum,Cont);
			}
		}
		Con[Number] = Cont;
		Number++;
	}
	for(int i = 0;i < Number;i++)
	{
		cout << Con[i] << endl;
	}
}
2024/1/27 18:32
加载中...