Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ đếm số cạnh của đa giác trong lưới

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)

  1. Duyệt mọi ô 2×2 (góc trên-trái tại (i,j) với 1≤i).
  2. Đếm bl = số ô đen trong 4 ô của khối 2×2.
  3. Nếu bl == 1 hoặc 3 → đó là một góc của đa giác → tăng .
  4. 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