侧边栏壁纸
  • 累计撰写 192 篇文章
  • 累计创建 2 个标签
  • 累计收到 87 条评论

【题解】P678 【入门】快乐的马里奥

Allen Best
2023-07-10 / 0 评论 / 0 点赞 / 67 阅读 / 1,286 字
温馨提示:
本文最后更新于 2023-07-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
#include<bits/stdc++.h>
using namespace std;
struct point {
	int x;
	int y;
}q[10000],front,node;
int a[102][102]={0};
int n,m,head=1,tail=1;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};

void bfs(){
	a[1][1]=1;
	node.x=1;
	node.y=1;
	int step=1;
	q[head]=node;
	while(head<=tail){
		front=q[head];
		head++;
		for(int i=0;i<4;i++){
			int nx=front.x+dx[i];
			int ny=front.y+dy[i];
			if(nx>0&&nx<=n&&ny>0&&ny<=m&&a[nx][ny]==0){
				point nxw;
				nxw.x=nx;
				nxw.y=ny;
				a[nx][ny]=++step;
				q[++tail]=nxw;
			}
		}
	}
}
int main(){
	cin>>n>>m;
	bfs();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct point {
	int x;
	int y;
};
int a[102][102]={0};
int n,m;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
queue<point>q;
void bfs(){
	a[1][1]=1;
	point np;
	np.x=1;
	np.y=1;
	int step=1;
	q.push(np);
	while(!q.empty()){
		point nwp=q.front();
		for(int i=0;i<4;i++){
			int nx=nwp.x+dx[i];
			int ny=nwp.y+dy[i];
			if(nx>0&&nx<=n&&ny>0&&ny<=m&&a[nx][ny]==0){
				point nxw;
				nxw.x=nx;
				nxw.y=ny;
				//nxw.step=nwp.step+1;
				a[nx][ny]=++step;
				q.push(nxw);
			}
		}
		q.pop();
	}
}
int main(){
	cin>>n>>m;
	bfs();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
0

评论区