问题链接:HDU-1241
思路
简单的深度优先搜索。
AC的代码
#include<iostream>
using namespace std;
void dfs(int , int );
int yidong[8][2] = { {1,0},{-1,0},{0,-1},{0,1},{-1,-1},{1,-1},{-1,1},{1,1} };
char a[105][105];
int n, m;
int main()
{
while (cin >> n >> m)
{
if (n == 0 && m == 0) break;
int s = 0;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (a[i][j] == '@') { dfs(i, j); s++; }
cout << s << endl;
s = 0;
}
return 0;
}
void dfs(int x, int y)
{
a[x][y] = '*';
int x1, y1;
for (int i = 0; i < 8; i++)
{
x1 = x + yidong[i][0];
y1 = y + yidong[i][1];
if (x1 >= 0 && x < n&&y1 >= 0 && y1 < m&&a[x1][y1] == '@') dfs(x1, y1);
}
}