标签:
1 #include<stdio.h> 2 #include<string.h> 3 char map[110][110]; 4 int move[8][2]={1,0,-1,0,0,1,0,-1,1,1,-1,-1,1,-1,-1,1};//两个坐标一组 分为8组 5 int h,w; 6 void dfs(int x,int y)//定义dfs函数,主函数找到了@,dfs启动,寻找主函数找到的@八面存在的@ 7 { 8 int next_x,next_y,i; 9 map[x][y]=‘*‘;//把找到的@变为*,以免重复搜索 10 for(i=0;i<8;i++) 11 { 12 next_x=x+move[i][0];//[0]表示两个坐标一组的第一个[i]表示两个坐标一组的第几组 13 next_y=y+move[i][1];//[1]表示两个坐标一组的第二个[i]表示两个坐标一组的第几组 14 if(next_x>=0&&next_x<h&&next_y>=0&&next_y<w) 15 { 16 if(map[next_x][next_y]==‘@‘) 17 { 18 dfs(next_x,next_y); 19 } 20 } 21 } 22 } 23 int main()//主函数开始,寻找第一个@ 24 { 25 int i,j,sum; 26 while(scanf("%d%d",&h,&w)&&(h!=0||w!=0)) 27 { 28 for(i=0;i<h;i++) 29 scanf("%s",map[i]); 30 sum=0; 31 for(i=0;i<h;i++) 32 { 33 for(j=0;j<w;j++) 34 { 35 if(map[i][j]==‘@‘) 36 { 37 dfs(i,j);//转移到dfs函数,由dfs函数开始搜索主函数找到@的八面存在的@ 38 sum++; 39 } 40 } 41 } 42 printf("%d\n",sum); 43 } 44 return 0; 45 }
标签:
原文地址:http://www.cnblogs.com/xzt6/p/5747565.html