| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
乃格兰!数组开30就WA了,开50就AC,题目不是说1-20么!#include<stdio.h>
#define MAXN 50 /* 开30竟然WA!!! */
int main()
{
int n, m, x, y;
while(scanf("%d%d%d%d", &n, &m, &x, &y), n)
{
int i, j;
char map[MAXN][MAXN];
int si[MAXN*MAXN], sj[MAXN*MAXN]; int sp = -1;
int sum;
for(i = 0; i <= n+1; i ++) for(j = 0; j <= m+1; j ++) map[i][j] = '.';
for(i = 1; i <= n; i ++)
scanf("%s", map[i]+1);
if(map[x][y] == 'X')
{
sp++; si[sp] = x; sj[sp] = y;
while(sp >= 0) /* DFS */
{
int ti = si[sp], tj = sj[sp]; sp--;
if(map[ti][tj] == 'X')
{
map[ti][tj] = 'A';
sp++; si[sp] = ti-1; sj[sp] = tj-1;
sp++; si[sp] = ti-1; sj[sp] = tj;
sp++; si[sp] = ti-1; sj[sp] = tj+1;
sp++; si[sp] = ti; sj[sp] = tj-1;
sp++; si[sp] = ti; sj[sp] = tj+1;
sp++; si[sp] = ti+1; sj[sp] = tj-1;
sp++; si[sp] = ti+1; sj[sp] = tj;
sp++; si[sp] = ti+1; sj[sp] = tj+1;
}
}
}
sum = 0;
for(i = 1; i <= n; i ++)
for(j = 1; j <= m; j ++)
if(map[i][j] == 'A')
{
if(map[i-1][j] != 'A') sum++;
if(map[i][j-1] != 'A') sum++;
if(map[i][j+1] != 'A') sum++;
if(map[i+1][j] != 'A') sum++;
}
printf("%d\n", sum);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator