1 条题解
-
0
#include <bits/stdc++.h> using namespace std; char C[33][33]; bool vis[33][33]; int n; bool inrange(int x, int y) { return x >= 0 && x < n && y >= 0 && y < n; } void f(int x, int y) { // 从当前位置出发,遍历四个方向 vis[x][y] = 1; // 往下 int nx = x + 1, ny = y; while (inrange(nx, ny) && C[nx][ny] == '.') vis[nx++][ny] = 1; // 向上 nx = x - 1, ny = y; while (inrange(nx, ny) && C[nx][ny] == '.') vis[nx--][ny] = 1; // 向左 nx = x, ny = y - 1; while (inrange(nx, ny) && C[nx][ny] == '.') vis[nx][ny--] = 1; // 向右 nx = x, ny = y + 1; while (inrange(nx, ny) && C[nx][ny] == '.') vis[nx][ny++] = 1; } int main() { cin >> n; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) cin >> C[i][j]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (C[i][j] == '*') f(i, j); } } int ans = 0; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (vis[i][j]) ans++; cout << ans; return 0; }
- 1
信息
- ID
- 12
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 36
- 已通过
- 19
- 上传者