百練oj2816 紅與黑

2021-06-20 06:48:43 字數 1077 閱讀 3994

總時間限制: 

1000ms 

記憶體限制: 

65536kb

描述 有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。

輸入包括多個資料集合。每個資料集合的第一行是兩個整數w和h,分別表示x方向和y方向瓷磚的數量。w和h都不超過20。在接下來的h行中,每行包括w個字元。每個字元表示一塊瓷磚的顏色,規則如下

1)『.』:黑色的瓷磚;

2)『#』:白色的瓷磚;

3)『@』:黑色的瓷磚,並且你站在這塊瓷磚上。該字元在每個資料集合中唯一出現一次。

當在一行中讀入的是兩個零時,表示輸入結束。

輸出對每個資料集合,分別輸出一行,顯示你從初始位置出發能到達的瓷磚數(記數時包括初始位置的瓷磚)。

樣例輸入

6 9 

....#.

.....#

......

......

......

......

......

#@...#

.#..#.

0 0

樣例輸出

45

** **:

#include#include#define max 30

char map[max][max];

int count(int px , int py)

}int main()

for( i = 1 ; i <= r ; i++ )}}

printf("%d\n",count(px,py)); }

return 0;

}

思路是用map陣列來儲存地圖,然後從@點出發,向四周計數。要用遞迴,如果乙個黑點,則返回1 + 周圍幾個黑點遞迴下去遇到的黑點數,注意當數過乙個黑點後要把那個點賦值為#,保證不會重複計數。因為可能有邊界的問題,所以陣列儲存從(1,1)開始,要用memset()把map全部初始化為'#',這樣返回值就可以用同乙個公式而不用分類討論。

百練 2816 紅與黑

描述 有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入包括多個資料集合。每個資料集合的第一行是兩個整數w和h,分別表示x方向和y方向瓷磚的數量。w和h都不超過20。在接下來的h行中...

百練OJ 4150 上機

總時間限制 1000ms 記憶體限制 65536kb 描述 又到週末了,同學們陸陸續續開開心心的來到機房上機。jbr也不例外,但是他到的有點晚,發現有些機位上已經有同學正在做題,有些機位還空著。細心的jbr發現,一位同學來到機房,坐在機位i上,如果他的左右兩邊都空著,他將獲得能力值a i 如果當他坐...

百練OJ 2815 城堡問題 DFS

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面牆。input 程式從標準輸入裝置讀入資料。第一行是...