poj 2386 Lake Counting

来源:互联网 发布:淘宝客聚划算链接转换 编辑:程序博客网 时间:2024/05/02 02:43
#include <iostream>#include <string>using namespace std;const int MAX = 110;char matrix[MAX][MAX];int n, m, vis[MAX][MAX], ans;//每一个点的八个方向坐标的增减! int dir[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}};//矩阵的输入 void init(){     int i, j;      for (i = 0; i < n; i++){          getchar();          for (j = 0; j < m; j++){               scanf("%c", &matrix[i][j]);          }     }     return ;}//进行深度搜索! void dfs(int x, int y){     int i, tmpx, tmpy;     vis[x][y] = 1;     for (i = 0; i < 8; i++){          tmpx = x + dir[i][0];          tmpy = y + dir[i][1];          if (tmpx >= 0 && tmpx < n && tmpy >= 0 && tmpy < m && matrix[tmpx][tmpy] == 'W' && !vis[tmpx][tmpy]){              dfs(tmpx, tmpy);          }     }}int main(){    int i, j;    while (scanf("%d%d", &n, &m) != EOF){          ans = 0;          memset(vis, 0, sizeof(vis));          init();          for (i = 0; i < n; i++){              for (j = 0; j < m; j++){                  if (matrix[i][j] == 'W' && !vis[i][j]){                      dfs(i, j);                      ans++;                  }              }          }          cout << ans << endl;    }        system("pause");}

原创粉丝点击