算法叙述:DFS(简单)
我的代码:
#include<iostream>
using namespace std;
char field[21][21]={'\0'};
int N,M;
void DFS(int i,int j)
{
field[i][j]='B'; //B代表已经走过的黑瓷砖
if(i-1>=0&&i-1<N&&field[i-1][j]=='.')
{
DFS(i-1,j);
}
if(i+1>=0&&i+1<N&&field[i+1][j]=='.')
{
DFS(i+1,j);
}
if(j-1>=0&&j-1<M&&field[i][j-1]=='.')
{
DFS(i,j-1);
}
if(j+1>=0&&j+1<M&&field[i][j+1]=='.')
{
DFS(i,j+1);
}
return ;
}
int main()
{
int i,j,counter=0;
while(cin>>M>>N&&M)
{
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
cin>>field[i][j];
}
}
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
if(field[i][j]=='@')
{
DFS(i,j);
}
}
}
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
if(field[i][j]=='B')
counter++;
}
}
cout<<counter<<endl;
counter=0;
}
return 0;
}