NOI2 5 1817 城堡問題

2022-09-19 07:09:09 字數 1432 閱讀 8753

描述

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~4面牆。

輸入程式從標準輸入裝置讀入資料。第一行是兩個整數,分別是南北向、東西向的方塊數。在接下來的輸入行裡,每個方塊用乙個數字(0≤p≤50)描述。用乙個數字表示方塊周圍的牆,1表示西牆,2表示北牆,4表示東牆,8表示南牆。每個方塊用代表其周圍牆的數字之和表示。城堡的內牆被計算兩次,方塊(1,1)的南牆同時也是方塊(2,1)的北牆。輸入的資料保證城堡至少有兩個房間。

輸出城堡的房間數、城堡中最大房間所包括的方塊數。結果顯示在標準輸出裝置上。

樣例輸入

4 7

11 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

這道題剛開始看的時候,我震驚了,這個怎麼用搜尋模呀!首先城堡的牆不是用圖形給出;其次,怎麼將其轉換為影象。

其實不用害怕,有些事情換個方向想就可以解決,看看上面的影象,我們為什麼不試著去轉換呢?

抱著這個想法,我試著轉換了一下,結果一次ac。

**如下:

#include#include#include#include#include#includeusing namespace std;

int a[103][103],m,n,k,sum,w[4]=,u[4]=,s;

void find(int p,int q)

if(p>=4)

if(p>=2)

if(p>=1)

}for(i=0;ik)

k=s;

s=0;

}printf("%d\n%d",sum,k);

}

其實也沒這麼難啦,有些事情只要肯嘗試,成功很簡單!

搜尋8 noi1817 城堡問題

一 心得 1 這題只是在普通的迷宮的基礎上面加上了牆的概念,所以基本的思路和 就和普通的迷宮是一樣的,只不過需要多加上一層牆的判斷 2 這裡牆的判斷是用的二進位制加上位運算的方法 二 題目 總時間限制 1000ms 記憶體限制 65536kb 描述 1 2 3 4 5 6 7 1 2 3 4 圖 1...

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 ...