求助,最后两个点会RE
查看原帖
求助,最后两个点会RE
733980
LxSmill楼主2023/2/27 21:24
#include<bits/stdc++.h>
using namespace std;
int n,c,s,ac,as;
char a[1001][1001];
int b[1001][1001];
bool ju[1001][1001]={false};
vector<int> ss;
vector<int> cc;
void judge(int x,int y)
{
	if(a[x-1][y]=='#') b[x][y]++;
	if(a[x+1][y]=='#') b[x][y]++;
	if(a[x][y+1]=='#') b[x][y]++;
	if(a[x][y-1]=='#') b[x][y]++;	
}
void search(int x,int y)
{
	if(ju[x][y]==false||x<1||x>n||y<1||y>n) return;
	ju[x][y]=false;
	s++;
	c+=4-b[x][y];
	search(x-1,y);
	search(x+1,y);
	search(x,y+1);
	search(x,y-1);			
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	    {
	    	cin>>a[i][j];
	    	if(a[i][j]=='#') ju[i][j]=true;
	    }
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++) if(a[i][j]=='#') judge(i,j); 
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
		{
			if(ju[i][j]==true)
			{
				search(i,j);
				ss.push_back(s);
				s=0;
				cc.push_back(c);
				c=0; 
			}
	    }
	ac=cc[0];as=ss[0];
	for(int i=1;i<cc.size();i++)
	{
		if(ss[i]>as)
		{
			as=ss[i];
			ac=cc[i];
		}
		if(ss[i]==as&&cc[i]<ac) ac=cc[i];
	}
	cout<<as<<" "<<ac<<endl;
	return 0;
}
2023/2/27 21:24
加载中...