#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;
}
样例全过,求大佬微调,我把码风整了一下,还请过目