迷宫【BFS+结构体\pair】

题目

代码-结构体

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;

int n,m;
int mp[110][110];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int d[110][110];
struct node{
    int x;
    int y;
};

void bfs(){
	queue<node> q;
	memset(d,-1,sizeof d);	
	q.push({0,0});
	d[0][0]=0;
	while(q.size()!=0){
		node tmp = q.front();
		q.pop();
		
		for(int i=0;i<4;i++){
			int nx=tmp.x + dx[i];
			int ny=tmp.y + dy[i];
			
			if(nx>=0 && nx<n && ny>=0 && ny<m && mp[nx][ny]==0 &&d[nx][ny] == -1){
				d[nx][ny] = d[tmp.x][tmp.y] + 1;
				q.push({nx,ny});
			}			
		}		
	}
	
}
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>mp[i][j];
		}
	}
	bfs();
	cout<<d[n-1][m-1]<<endl;
 } 

代码-pair

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;

int n,m;
int mp[110][110];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int d[110][110];
typedef pair<int,int> PII;

void bfs(){
	queue<PII> q;
	memset(d,-1,sizeof d);	
	q.push({0,0});
	d[0][0]=0;
	while(q.size()!=0){
		PII tmp = q.front();
		q.pop();
		
		for(int i=0;i<4;i++){
			int nx=tmp.first + dx[i];
			int ny=tmp.second + dy[i];
			
			if(nx>=0 && nx<n && ny>=0 && ny<m && mp[nx][ny]==0 &&d[nx][ny] == -1){
				d[nx][ny] = d[tmp.first][tmp.second] + 1;
				q.push({nx,ny});
			}			
		}		
	}
	
}
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>mp[i][j];
		}
	}
	bfs();
	cout<<d[n-1][m-1]<<endl;
 } 
相关推荐
Ulana16 分钟前
计算机基础10大高频考题解析
java·人工智能·算法
Ayanami_Reii1 小时前
区间不同数的个数-树状数组/线段树/莫队/主席树
数据结构·c++·算法·线段树·树状数组·主席树·莫队
李玮豪Jimmy1 小时前
Day37:动态规划part10(300.最长递增子序列、674.最长连续递增序列 、718.最长重复子数组)
算法·动态规划
歌_顿1 小时前
Embedding 模型word2vec/glove/fasttext/elmo/doc2vec/infersent学习总结
人工智能·算法
Echo_NGC22371 小时前
【KL 散度】深入理解 Kullback-Leibler Divergence:AI 如何衡量“像不像”的问题
人工智能·算法·机器学习·散度·kl
CoderYanger2 小时前
C.滑动窗口-求子数组个数-越长越合法——3325. 字符至少出现 K 次的子字符串 I
c语言·数据结构·算法·leetcode·职场和发展·哈希算法·散列表
sin_hielo2 小时前
leetcode 3606
数据结构·算法·leetcode
Xの哲學3 小时前
Linux DRM 架构深度解析
linux·服务器·算法·架构·边缘计算
qq_433554543 小时前
C++树形DP(树上分组背包)
c++·算法·深度优先
电子_咸鱼3 小时前
常见面试题——滑动窗口算法
c++·后端·python·算法·leetcode·哈希算法·推荐算法