http://poj.org/problem?id=1562
只想问一句,还敢更坑么?每一行数据后都可能有多个空格。。
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 int m,n; 5 char map[102][102]; 6 void find(int *x,int *y) 7 { 8 int i,j; 9 for(i=1;i<=m;i++) 10 for(j=1;j<=n;j++) 11 if(map[i][j]=='@') { 12 *x=i; 13 *y=j; 14 return; 15 } 16 } 17 bool check(int x,int y) 18 { 19 if(1<=x&&x<=m&&1<=y&&y<=n) return true; 20 return false; 21 } 22 void dfs(int x,int y) 23 { 24 if(!check(x,y)) return; 25 if(map[x][y]!='@') return; 26 map[x][y]='*'; 27 dfs(x-1,y-1); 28 dfs(x,y-1); 29 dfs(x+1,y-1); 30 dfs(x-1,y); 31 dfs(x+1,y); 32 dfs(x-1,y+1); 33 dfs(x,y+1); 34 dfs(x+1,y+1); 35 } 36 int main() 37 { 38 while(scanf("%d%d",&m,&n)!=EOF) { 39 if(m==n&&m==0) return 0; 40 int i,j; 41 char ch; 42 while(ch=getchar()!='\n') ; 43 for(i=1;i<=m;i++) { 44 for(j=1;j<=n;j++) { 45 scanf("%c",&map[i][j]); 46 } 47 while(ch=getchar()!='\n') ; 48 } 49 int x=-1,y=-1; 50 find(&x,&y); 51 int total_field=0; 52 while(check(x,y)) { 53 total_field++; 54 dfs(x,y); 55 x=y=-1; 56 find(&x,&y); 57 } 58 printf("%d\n",total_field); 59 } 60 return 0; 61 }