BFS
void bfs(int x,int y)
{
// 1、将首元素加入到队列中
queue<node> q;
node n = {x,y};
q.push(n);
// 2、队列不为空
while(!q.empty())
{
// 3、取出队列的第一个元素
node t = q.front();
q.pop();
// 4、该元素满足要求
if(条件) cout<<"666"<<endl;
// 5、 判断四个方向
for(int i = 0;i < 4;i++)
{
// 6、获得新节点
int xx = n.x + x[i];
int yy = n.y + y[i];
// 7、是否越界,能否访问,是否第一个访问
if(条件)
{
// 8、将新节点添加到队列中
node t = {xx,yy};
q.push(t);
}
}
}
}
DFS
void dfs(int x,int y)
{
//1、范围等条件
if(条件) return;
//2、已经访问
vis[x][y] = true;
//3、四个方法dfs
for(int i = 0;i < 4;i++)
//深入
dfs(x+xx[i],y+yy[i]);
}
int main()
{
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
if(!vis[i][j])
{
ans++;
dfs(i,j);
}
}
}
return 0;
}