城堡問題 Flood Fill bfs

2021-10-03 01:32:35 字數 1661 閱讀 7522

1   2   3   4   5   6   7
#############################

1 # | # | # | | #

#####—#####—#---#####—#

2 # # | # # # # #

#—#####—#####—#####—#

3 # | | # # # # #

#—#########—#####—#---#

4 # # | | | | # #

#############################

(圖 1)

| = no wall

方向:上北下南左西右東。

圖1是乙個城堡的地形圖。

請你編寫乙個程式,計算城堡一共有多少房間,最大的房間有多大。

城堡被分割成 m∗nm∗n個方格區域,每個方格區域可以有0~4面牆。

輸入格式

第一行包含兩個整數 mm 和 nn,分別表示城堡南北方向的長度和東西方向的長度。

接下來 mm 行,每行包含 nn 個整數,每個整數都表示平面圖對應位置的方塊的牆的特徵。

每個方塊中牆的特徵由數字 pp 來描述,我們用1表示西牆,2表示北牆,4表示東牆,8表示南牆,pp 為該方塊包含牆的數字之和。

例如,如果乙個方塊的 pp 為3,則 3 = 1 + 2,該方塊包含西牆和北牆。

城堡的內牆被計算兩次,方塊(1,1)的南牆同時也是方塊(2,1)的北牆。

輸入的資料保證城堡至少有兩個房間。

輸出格式

共兩行,第一行輸出房間總數,第二行輸出最大房間的面積(方塊數)。

資料範圍

1≤m,n≤501≤m,n≤50,

0≤p≤150≤p≤15

輸入樣例:

4 711 6 11 6 3 10 6

7 9 6 13 5 15 5

1 10 12 7 13 7 5

13 11 10 8 10 12 13

輸出樣例:59

#include

#include

#include

#include

using

namespace std;

#define x first

#define y second

typedef pair<

int,

int> pii;

const

int n=

55,m=n*n;

int n,m;

pii q[m]

;bool st[n]

[n];

int g[n]

[n];

intbfs

(int sx,

int sy)

,dy[4]

=;int hh=

0,tt=0;

q[0]=

; st[sx]

[sy]

=true

;while

(hh<=tt)

; st[a]

[b]=

true;}

}return area;

}int

main()

cout

}

1817 城堡問題

總時間限制 1000ms 記憶體限制 65536kb 描述1 2 3 4 5 6 7 1 2 3 4 圖 1 wall no wall no wall 圖1是乙個城堡的地形圖。請你編寫乙個程式,計算城堡一共有多少房間,最大的房間有多大。城堡被分割成m n m 50,n 50 個方塊,每個方塊可以有0...

35 城堡問題

如圖是乙個城堡的地形圖。請你編寫乙個程式,計算城堡一共有多少房間,最大的房間有多大。城堡被分割成 m n m 50,n 50 個方塊,每個方塊可以有 0 4 面牆。資料保證城堡四周都是牆 輸入 輸出 樣例輸入47 11 6 11 6 3 10 6 7 9 6 13 5 15 5 1 10 12 7 ...

城堡問題 Flood Fill

1 2 3 4 5 6 7 1 2 3 4 圖 1 wall no wall no wall 方向 上北下南左西右東。圖1是乙個城堡的地形圖。請你編寫乙個程式,計算城堡一共有多少房間,最大的房間有多大。城堡被分割成 m n個方格區域,每個方格區域可以有0 4面牆。注意 牆體厚度忽略不計。輸入格式 第...