深搜DFS
void dfs(int x,int y){
v[x][y]=1;
for(int h=-1;h<=1;h++){
for(int l=-1;l<=1;l++){
int xx=x+h,yy=y+l;
if(xx>=0&&xx<=n-1&&yy>=0&&yy<=m-1&&v[xx][yy]==0&&s[xx][yy]=='W'){
dfs(xx,yy);
}
}
}
}
广搜BFS
void bfs(int x,int y){
queue<node>stk;
node a,b;
v[x][y]=1;
a.x=x;
a.y=y;
stk.push(a);
while(!stk.empty()){
a=stk.front();
stk.pop();
for(int i=0;i<=7;i++){
b.x=a.x+d[i][0];
b.y=a.y+d[i][1];
if(s[b.x][b.y]=='W'&&v[b.x][b.y]==0&&b.x>=0&&b.x<=n-1&&b.y>=0&&b.y<=m-1){
stk.push(b);
v[b.x][b.y]=1;
}
}
}
}
周围一圈方块搜索可以用两个for循环解决,比起使用d[i][0]与d[i][1] 来说跟稳一点。
说实话深搜广搜都不难,只是一种递归、递推的思想,具体的题目应该具体分析。