AcWing 1113. 红与黑
原题链接
简单
作者:
小卒无名
,
2021-01-12 15:53:06
,
所有人可见
,
阅读 2
#include <iostream>
using namespace std;
int fx[4][2] = {
{0,1},
{0,-1},
{1,0},
{-1,0}
};
char a[25][25];
int m,n;
int dfs(int x,int y)
{
if(a[x][y] == '#')
return 0;
int ans = 1;
a[x][y] = '#';
for(int i=0;i<4;i++)
{
int xx = x+fx[i][0],yy = y+fx[i][1];
if(xx >= 0 && yy >= 0 && xx < n && yy < m && a[xx][yy] == '.')
ans += dfs(xx,yy);
}
return ans;
}
int main()
{
while(~scanf("%d %d",&m,&n) && n && m)
{
int nowx,nowy;
for(int i=0;i<n;i++)
scanf("%s",a[i]);
for(int i=0;i<n;i++)
{
int j;
for(j=0;j<m;j++)
if(a[i][j] == '@')
nowx = i,nowy = j;
if(j < m)
break;
}
int ans = dfs(nowx,nowy);
printf("%d\n",ans);
}
return 0;
}