Mô tả bài toán
Cho lưới h×w có ô trắng ('.') và đen ('#'). Các ô đen tạo thành một đa giác (viền ngoài lưới luôn trắng). Tính số cạnh của đa giác đó.
Ví dụ
h=4,w=4, lưới = {"....", ".##.", ".##.", "...."}. Đầu ra: 4 (hình vuông).
Thuật toán (Đếm góc 2×2)
- Duyệt mọi ô 2×2 (góc trên-trái tại
(i,j)với1≤i). - Đếm
bl= số ô đen trong 4 ô của khối 2×2. - Nếu
bl == 1 hoặc 3→ đó là một góc của đa giác → tăng. - Tổng
chính là số cạnh đa giác.
Đoạn mã C++
#include <bits/stdc++.h>
using namespace std;
void solve(int h, int w, vector<string> grid) {
int sides=0;
for(int i=1;i
Đầu vào / Đầu ra
Input: 4, 4, {"....", ".##.", ".##.", "...."}
Output: 4