P1596 [USACO10OCT] Lake Counting S

P1596 [USACO10OCT] Lake Counting S #include iostream using namespace std; int N; // N行 int M; // M列 int ans; // 答案 char a[105][105]; void DFS(char a[][105], int i, int j); int main(){ cin N M; for(int i 1; i N; i){ for(int j 1; j M; j){ cin a[i][j]; } } for(int i 1; i N; i){ for(int j 1; j M; j){ if(a[i][j] W){ ans; DFS(a, i, j); } } } cout ans endl; system(pause); return 0; } void DFS(char a[][105], int i, int j){ // C中二维数组传参必须指定列的元素大小 a[i][j] .; // 把找到的水坑标记为旱地防止重复找 // 左上 if(i-1 1 j-1 1 a[i-1][j-1] W){ DFS(a, i-1, j-1); } // 左 if(j-1 1 a[i][j-1] W){ DFS(a, i, j-1); } // 左下 if(i1 N j-1 1 a[i1][j-1] W){ DFS(a, i1, j-1); } // 右上 if(i-1 1 j1 M a[i-1][j1] W){ DFS(a, i-1, j1); } // 右 if(j1 M a[i][j1] W){ DFS(a, i, j1); } // 右下 if(i1 N j1 M a[i1][j1] W){ DFS(a, i1, j1); } // 上 if(i-1 1 a[i-1][j] W){ DFS(a, i-1, j); } // 下 if(i1 N a[i1][j] W){ DFS(a, i1, j); } }