1 #include<stdio.h>
2 #include<stdlib.h>
3 int N, M;
4 char field[3][3] =
5 {
6 { 'W','*','*'},
7 { '*','W','*'},
8 { '*','*','*'},
9 };
10 void dfs(int x,int y) {
11 field[x][y] = '*';
12
13 for (int dx = -1; dx <= 1; dx++){
14 for (int dy = -1; dy <= 1; dy++) {
15 int nx = x + dx, ny = y + dy;
16 if (0 <= nx && nx < N && 0 <= ny && ny < M&&field[nx][ny] == 'W')
17 dfs(nx, ny);
18 }
19 }
20 return;
21 }
22
23 void solve() {
24 int res = 0;
25 for (int i = 0; i < N; i++) {
26 for (int j = 0; j < M; j++) {
27 if (field[i][j] == 'W') {
28 dfs(i, j);
29 res++;
30 }
31 }
32 }
33 printf("%d", res);
34 }
35
36 int main() {
37 scanf("%d%d", &N,&M);
38 solve();
39 // system("pause");
40 return 0;
41 }
从任意w 开始 不停地把临接部分用“*”代替
直到图中不再存在W