玄关
查看原帖
玄关
1063811
gwg725楼主2024/10/21 19:07
#include<bits/stdc++.h>
using namespace std;
int n,m;
int fx[5]={0,1,-1,0,0};
int fy[5]={0,0,0,-1,1};
char a[505][505];
bool b[505][505];

void dfs(int x,int y)
{
	b[x][y]=1;
	for(int i=1;i<=4;i++)
	{
		int x_x=fx[i]+x;
		int x_y=fy[i]+y;
		if(x_x>=1&&x_x<=n&&x_y>=1&&x_y<=m&&b[x_x][x_y]==0&&a[x_x][x_y]!='*')
		{
			dfs(x_x,x_y);
		}
	}
}

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j]; 
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(a[i][j]=='0'&&(i==1||j==1||i==n||j==n)) dfs(i,j);
		}
	}
	int cnt = 0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(b[i][j]==0&&a[i][j]=='0') cnt++;
		}
	}
	cout << cnt;
	return 0;
}

样例全过,求大佬微调,我把码风整了一下,还请过目

2024/10/21 19:07
加载中...