炸裂,全WA)
查看原帖
炸裂,全WA)
955954
Miracle_InDream楼主2024/12/18 23:05
#include<bits/stdc++.h>
using namespace std;
const int N=505;
int x,y;
char a[N][N];
int vis[N][N];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int ans=0;
void dfs(int xxx,int yyy)
{
	if(vis[xxx][yyy]||a[xxx][yyy]=='*'||xxx<0||yyy<0||xxx>x||yyy>y)
	{
		return;
	}
	vis[xxx][yyy]=1;
	for(int i=0;i<4;i++)
	{
		int xx=xxx+dx[i];
		int yy=yyy+dy[i];
		dfs(xx,yy);
	}
}
int main()
{
	cin>>x>>y;
	for(int i=1;i<=x;i++)
	{
		for(int j=1;j<=y;j++)
		{
			cin>>a[i][j];
		}
	}
//	for(int i=1;i<=x;i++)
//	{
//		for(int j=1;j<=y;j++)
//		{
//			if(a[i][j]=='0'&&vis[i][j]==0&&(i==1||j==1||i==x||j==y))
//			{
//				dfs(i,j);
//			}
//		}
//	}
	dfs(0,0);
	for(int i=1;i<=x;i++)
	{
		for(int j=1;j<=y;j++)
		{
			if(vis[i][j]==0&&a[i][j]=='0')
			{
				ans++;
			}
		}
	}
	cout<<ans;
	return 0;
}

看了前人的经验,发现自己在

4 4
****
*00*
*00*
****

这种情况下答案错误,但是不知道为什么错了(内容过于玄学导致的。。。原帖见https://www.luogu.com.cn/discuss/754291

2024/12/18 23:05
加载中...