2011-06-14 21:03:11Morris
d930. B. 薑餅部落的危機
http://zerojudge.tw/ShowProblem?problemid=d930
內容 :
薑餅部落位於遠得要命王國北方三千公里外,住民僅限於薑餅人一族。該部落散落於海上的島嶼群,由於終年冰雪籠罩因此海面常保持著結冰狀態。
以往薑餅人們和平地生活於此,但近年來溫室效應影響擴大造成極地暖化,使得薑餅人的性命受到威脅。(它們碰到水會立刻融化!!)
有鑑於此,薑餅長老下令動員全部人力在所有陸地與海鄰接處築起高牆,以保護其家園不被海水侵蝕。不過薑餅人們的智慧並不高,無法計算需要的圍牆長度,請你寫一個程式幫助它們計算。
輸入說明
:
測資包含多組測試資料,第一列有一個整數 T 表示接下來有幾組測試資料。
每組測試資料表示一張地圖,其第一列有兩個整數 N, M,代表該地圖的長與寬,地圖由 0 和 1 構成,0 表示海面、1 表示陸地,地圖外圍皆視同海面 (1 ≤ N, M ≤ 500)。
輸出說明
:
對每筆測試資料輸出隔絕海陸所需的圍牆長度。
範例輸入 :
2 4 5 00000 01010 01110 00000 4 5 00000 01110 01010 01100
範例輸出 :
12 16
提示
:
出處
:
/**********************************************************************************/
/* Problem: d930 "B. 薑餅部落的危機" from 2010 NPSC 國中組初賽 */
/* Language: C */
/* Result: AC (36ms, 1254KB) on ZeroJudge */
/* Author: morris1028 at 2011-06-12 08:46:53 */
/**********************************************************************************/
#include<stdio.h>
main() {
int T, a, b, n, m;
char s[501];
scanf("%d", &T);
while(T--) {
scanf("%d %d", &n, &m);
int Map[502][502] = {}, Ans;
for(a = 1; a <= n; a++) {
scanf("%s", s);
for(b = 1; b<= m; b++)
Map[a][b] = s[b-1] - '0';
}
n++, m++, Ans = 0;
for(a = 0; a <= n; a++)
for(b = 0; b <= m; b++) {
if(Map[a][b] == 0) {
if(a-1 >= 0 && Map[a-1][b] == 1)
Ans++;
if(a+1 <= n && Map[a+1][b] == 1)
Ans++;
if(b-1 >= 0 && Map[a][b-1] == 1)
Ans++;
if(b+1 <= m && Map[a][b+1] == 1)
Ans++;
}
}
printf("%d\n", Ans);
}
return 0;
}
上一篇:d929. A. 迴文
下一篇:d931. C. 幽靈特務報到