提交时间:2022-08-04 09:28:36

运行 ID: 57211

#include<bits/stdc++.h> using namespace std; int dx[4] = {0, 0, 1, -1}; int dy[4] = {1, -1, 0, 0}; int n, ans, len[1005], a[105][205], cnt, vis[105][205]; char ch; void dfs(int x, int y){ vis[x][y] = 1; for(int i = 0; i < 4; i++){ int nx = dx[i] + x, ny = dy[i] + y; if(nx >= 1 && ny >= 1 && nx <= n && ny <= len[nx] && !vis[nx][ny] && a[nx][ny] != 32 && a[nx][ny] != 42 && a[nx][ny] != 13)//广搜基操 dfs(nx, ny); } } int main(){ scanf("%d",&n); getchar(); while(scanf("%c",&ch) != EOF) if(ch == '\n'){ cnt++; continue; } else { len[cnt]++; a[cnt][len[cnt]] = ch; } } for(int i = 1; i <= n; i++){ for(int j = 1; j <= len[i]; j++){ if(!vis[i][j] && a[i][j] != 32 && a[i][j] != 42 && a[i][j] != 13){ dfs(i, j); ans++; } } } printf("%d",ans); }