總時間限制:
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 程式從標準輸入裝置讀入資料。第一行是...