1241 DFS
阿新 • • 發佈:2018-12-10
最簡單的板子題,摸清dfs套路就好,不用剪枝,不用優化,dfs的模板在我部落格的搜尋模組裡找。
#include <iostream> #include <cstring> #include <ctime> using namespace std; const int maxn = 105; int ans; int n, m; char Map[maxn][maxn]; int a[] = {1, -1, 0, 0, 1, 1, -1, -1}; int b[] = {0, 0, 1, -1, 1, -1, 1, -1}; void dfs(int x, int y) { Map[x][y] = '*'; for (int i = 0; i < 8; i++) { int xx = x+a[i]; int yy = y+b[i]; if (xx >= 0 && xx < n && yy >= 0 && yy < m && Map[xx][yy] == '@') dfs(xx, yy); } } int main() { ios::sync_with_stdio(false); while (cin >> n >> m) { if (!n && !m) break; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) cin >> Map[i][j]; ans = 0; for (int i = 0;i < n; i++) { for (int j = 0; j < m; j++) { if (Map[i][j] == '@') {ans++; dfs(i, j);} } } cout << ans << endl; } return 0; }