标签:
简单的DFS,从八个方向搜索,一次就AC了hhhh
#include<cstdio> #include<cmath> int dir[8][2]= {{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{1,-1},{-1,1},{1,1}}; char map[100][100]; int count; int m,n; void dfs(int x,int y) { if(x<0||y<0||x==m||y==n) return; if(map[x][y]==‘*‘) return; else { map[x][y]=‘*‘; for(int i=0;i<8;i++) dfs(x+dir[i][0],y+dir[i][1]); } } int main() { while(~scanf("%d%d",&m,&n)&&m&&n) { for(int i=0;i<m;i++) scanf("%s",map[i]); count=0; for(int i=0;i<m;i++) for(int j=0;j<n;j++) { if(map[i][j]==‘@‘) { count++; dfs(i,j); } } printf("%d\n",count); } }
标签:
原文地址:http://www.cnblogs.com/CodeMIRACLE/p/5395518.html