POJ-1562

#include <stdio.h>

char grid[100][100];
int visited[100][100];
void dfs(int x, int y)
{
     int i, j;
     // 设为访问过
     visited[x][y] = 1;
     for (i = x-1; i<= x+1; i++)
         for (j = y-1; j <= y+1; j++)
             if (i >= 0 && j>= 0 && !visited[i][j] && grid[i][j] == '@')
                dfs(i, j);
}

int main()
{
    int rows, columns;
    int i, j, sum;
    while (scanf("%d%d\n", &rows, &columns), rows, columns) {         
          for (i = 0; i < rows; i++) {
              gets(grid[i]);
              for (j = 0; j < columns; j++)
                  visited[i][j] = 0;
          }
          for (i = sum =0; i < rows; i++)
              for (j = 0; j < columns; j++)
                  if (!visited[i][j] && grid[i][j] == '@') {
                     sum++;
                     dfs(i, j);
                  }
          printf("%d\n", sum);
    }
    return 0;
}

你可能感兴趣的:(POJ-1562)