poj2386

本文地址:http://www.javashuo.com/article/p-hfoknwkc-db.htmlhtml

題目名稱:Lake Countingide

連接:http://poj.org/problem?id=2386spa

題意:在一個 N*M 的園子裏,"W"表明水,"."表明乾地。每一個地方的八個相鄰方向都認爲是連在一塊兒的,計算有多少攤水。code

思路:所有便利一次,遇到"W"就DFS判斷相連的,並統計和改爲".",計算DFS的次數。htm

代碼以下:blog

 1 #include<cstdio>
 2 using namespace std;  3 char field[105][105];  4 int n,m;  5 void dfs(int x, int y) {  6     field[x][y] = '.';  7     for(int dx = -1; dx <= 1; ++dx) {  8         for(int dy = -1; dy <= 1; ++dy) {  9             int xx = x + dx; 10             int yy = y + dy; 11             if(xx >= 0 && yy >= 0 && xx < n && yy < m && field[xx][yy] == 'W') { 12  dfs(xx, yy); 13  } 14  } 15  } 16     return ; 17 } 18 int main() { 19     while(scanf("%d%d", &n, &m) != EOF) { 20         for(int i = 0; i < n; ++i) { 21  getchar(); 22             for(int j = 0; j < m; ++j) { 23                 scanf("%c", &field[i][j]); 24  } 25  } 26         int cnt = 0; 27         for(int i = 0; i < n; ++i) { 28             for(int j = 0; j < m; j++) { 29                 if(field[i][j] == 'W') { 30  dfs(i, j); 31                     ++cnt; 32  } 33  } 34  } 35         printf("%d\n", cnt); 36  } 37     return 0; 38 }
View Code
相關文章
相關標籤/搜索