閉合區域面積統計 題解

2022-05-05 18:33:08 字數 1273 閱讀 7477

題目描述

程式設計計算由『*』號圍成的下列圖形的面積。面積的計算方法是統計*號所圍成

的閉合曲線中水平線和垂直線交點的數目。如圖所示,在10*10 的二維陣列中,

有*圍住了15 個點,因此面積為15。

0 0 0 0 0 0 0 0 0 0

0 0 0 0 * * * 0 0 0

0 0 0 0 * 0 0 * 0 0

0 0 0 0 0 * 0 0 * 0

0 0 * 0 0 0 * 0 * 0

0 * 0 * 0 * 0 0 * 0

0 * 0 0 * * 0 * * 0

0 0 * 0 0 0 0 * 0 0

0 0 0 * * * * * 0 0

0 0 0 0 0 0 0 0 0 0

輸入乙個10*10 的二維陣列, 裡面的數為0 和1,1 代表著*號。

輸出乙個整數, 被圍住的點。

樣例輸入

0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 1 1 0 0 0

0 0 0 0 1 0 0 1 0 0

0 0 0 0 0 1 0 0 1 0

0 0 1 0 0 0 1 0 1 0

0 1 0 1 0 1 0 0 1 0

0 1 0 0 1 1 0 1 1 0

0 0 1 0 0 0 0 1 0 0

0 0 0 1 1 1 1 1 0 0

0 0 0 0 0 0 0 0 0 0

樣例輸出

15這道題可以用寬搜來解決。

先開兩個佇列,用來存走過的每乙個點的座標。之後直接計算閉合區間的面積是很費勁的,但是如果把這個面積之外到整個邊界的數都轉換成「1」的話,就可以直接算「0」的個數,就是圖形的面積了。

所以:

#include#include

#include

using

namespace

std;

int map[15][15

];int nx[5] = ;

int ny[5] = ;

queue

x;queue

y;void bfs(int a,int

b) }

x.pop();

y.pop();

}}int

main()

bfs(

0,0);

for(int i = 0; i <= 11; i++)

}cout

return0;

}

閉合區域面積統計

閉合區域面積統計 area 題目描述 程式設計計算由 號圍成的下列圖形的面積。面積的計算方法是統計 號所圍成的閉合曲線中水平線和垂直線交點的數目。如圖所示,在10 10 的二維陣列中,有 圍住了15 個點,因此面積為15。輸入乙個10 10 的二維陣列,裡面的數為0 和1,1 代表著 號。輸出乙個整...

matlab去除大面積連通區域

在利用進行影象形態學處理的時候,經常需要去除面積較大或面積較小的連通區域。對於去除面積較小的連通區域,matlab提供了現有的函式 bw2 bwareaopen bw,p,conn 刪除二值影象bw中面積小於p的物件,預設情況下conn使用8鄰域可是matlab並沒有去除面積較大連通區域的函式,當然...

bwlabel函式 統計連通區域 MATLAB

matlab bwlabel函式 統計連通區域 使用dfs計算連通區域個數 4連通域邊界填充演算法和8連通域邊界填充演算法c l bwlabel bw,n 返回乙個和bw大小相同的l矩陣,包含了標記了bw中每個連通區域的類別標籤,這些標籤的值為1 2 num 連通區域的個數 n的值為4或8,表示是按...