全WA求助,关注感谢
查看原帖
全WA求助,关注感谢
673638
huangxinhao楼主2024/3/13 19:09
#include<bits/stdc++.h>
using namespace std;
const int N=510;
char g[N][N];
bool vis[N][N],flag;
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},n,m,cnt;

bool check(int x,int y)
{
	return x>=1&&x<=n&&y>=1&&y<=m &&g[x][y]!='*' &&!vis[x][y]; 
}
void dfs(int x,int y)
{
	vis[x][y]=1;
	for(int i=0;i<4;i++)
	{
		int nx=x+dx[i],ny=y+dy[i];
		if(check(nx,ny))dfs(nx,ny);
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	cin>>g[i][j];
	
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	if(!vis[i][j]&&g[i][j]=='0')
	{
		cnt++;
		dfs(i,j);
	}
	cout<<cnt;
	return 0;
}

样例1也没过

2024/3/13 19:09
加载中...