hdu 1312 Red and Black
本题来自:http://acm.hdu.edu.cn/showproblem.php?pid=1312
英语题意翻译:在宽、高不超过20的范围里,从@开始,统计四周有几个.(前后左右,斜方不算)。
英语不好,翻译了很久···
1 #include <stdio.h> 2 #include<string.h> 3 char graph[21][21],visted[21][21]; 4 int w,h,ans; 5 int tab[4][2]={1,0,0,1,-1,0,0,-1}; 6 7 void dfs(int x,int y) 8 { 9 visted[x][y]=1; 10 ans++; 11 for(int i=0;i<4;i++) 12 { 13 int xx=x+tab[i][0]; 14 int yy=y+tab[i][1]; 15 if(0<=xx&&xx<h&&0<=yy&&yy<w&&graph[xx][yy]!='#'&&visted[xx][yy]!=1) 16 dfs(xx,yy); 17 } 18 } 19 20 void solve() 21 { 22 for(int i=0;i<h;i++) 23 for(int j=0;j<w;j++) 24 if(graph[i][j]=='@') 25 { 26 dfs(i,j); 27 } 28 printf("%d\n",ans); 29 } 30 int main() 31 { 32 while(~scanf("%d%d",&w,&h)&&(w||h)) 33 { 34 getchar(); 35 memset(visted,0,sizeof(visted)); 36 memset(graph,'\0',sizeof(graph)); 37 ans=0; 38 for(int i=0;i<h;i++) 39 { 40 for(int j=0;j<w;j++) 41 scanf("%c",&graph[i][j]); 42 getchar(); 43 } 44 solve(); 45 } 46 return 0; 47 }

浙公网安备 33010602011771号