题目大意:一个长方形空间,上面铺红色和黑色瓦片,一个人起初站在黑色瓦片上,每次可以走到相邻的4个黑色瓦片上,输入数据,求其能走过多少瓦片
思路:用dfs;
代码:
#include
using namespace std;
int w,h;
char** n;
int fun(int x,int y)
{
if((x < 0)||(y < 0)||(x > h-1)||(y > w-1))return 0;
if(n[x][y] != '#')
{
n[x][y] = '#';
return 1+fun(x-1,y)+fun(x+1,y)+fun(x,y-1)+fun(x,y+1);
}
else return 0;
}
int main()
{
int i,j,x,y;
while(cin >> w >> h)
{
if((w == 0)&&(h == 0))break;
n = new char*[h];
for(i = 0;i < h;i++)
n[i] = new char[w];
for(i = 0;i < h;i++)
{
for(j = 0;j < w;j++)
{
cin >> n[i][j];
if(n[i][j] == '@')
{
x = i;
y = j;
}
}
}
cout << fun(x,y) << endl;
}
return 0;
}