c++的广搜模板
这段代码实现了一个基础的广度优先搜索(BFS)算法,用于填充n×m矩阵。从(1,1)位置开始,按层序遍历顺序依次填充数字1到n×m。程序使用队列结构存储待处理节点,通过四个方向(上下左右)进行扩展,确保每个位置只被访问一次。最终输出填充完成的数字矩阵,展示了BFS在二维网格中的典型应用。代码结构清晰,包含了输入处理、BFS实现和结果输出三个主要部分。
·
很基础的一道广搜模板题了。
#include<bits/stdc++.h>
using namespace std;
struct ss{
int x,y;
};
ss g[10010];
int n,m;
int cnt,h,t,nx,ny;
int a[110][110];
int dx[5]={0,0,1,0,-1};
int dy[5]={0,1,0,-1,0};
int main() {
cin>>n>>m;
h=0;t=1;
g[t].x=1;g[t].y=1;
cnt=1;
a[t][t]=cnt;
while(h<t){
h++;
for(int i=1;i<=4;i++){
nx=g[h].x+dx[i];
ny=g[h].y+dy[i];
if(nx>=1&&ny>=1&&nx<=n&&ny<=m&&a[nx][ny]==0){
a[nx][ny]=++cnt;
g[++t].x=nx;
g[t].y=ny;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
更多推荐
所有评论(0)