当前位置: 首页 > article >正文

洛谷 P1746 离开中山路 C语言 bfs

题目:

https://www.luogu.com.cn/problem/P1746

bfs模型,注意下输入是字符,也要创建个字符数组。

代码如下:

#include <iostream>
#include<algorithm>
#include<queue>
using namespace std;
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0}; 
struct Node{
	int x;
	int y;
	int step;
};
bool stl[1005][1005];
char map[1005][1005];//0 表示马路,1 表示店铺,注意两个数之间没有空格
int n; 
int x1,y1,x2,y2;
int main() 
{
	cin >> n;
	for(int i = 1 ; i <= n ; i++)
	{
		for(int j = 1 ; j <= n ; j++)
		{
		  cin >> map[i][j];
		}
	}
	cin >> x1 >> y1 >> x2 >> y2;

	queue <Node> q;//创建队列 
	Node start = {x1,y1,0};//直接创建队首对象start 
	q.push(start);
	stl[x1][y1] = true;
	while(!q.empty())
	{
		int x = q.front().x;//取出队首的x,y 
		int y = q.front().y;
		int step = q.front().step;
		if(x == x2 && y == y2)
		{
			cout <<step;
			break;
		}
		for(int k = 0 ; k < 4 ; k++)
		{
			int tx = x + dx[k];
			int ty = y + dy[k];
			if(tx >= 1 && tx <= n && ty >= 1 && ty <= n && stl[tx][ty] == false && map[tx][ty] == '0')
			{
				stl[tx][ty] = true;//标记已探索 
				Node newpos;
				newpos.x = tx;
				newpos.y = ty;
				newpos.step = step + 1;
				q.push(newpos); 
			}
		}
		q.pop();
	 } 
	return 0;
}


http://www.kler.cn/a/417667.html

相关文章:

  • Kafka 使用说明(kafka官方文档中文)
  • Ollama本地搭建大模型
  • DeepSeek R1 x ApiSmart
  • trinitycore服务器离线,原来是mysql里数据库flag设置为2离线状态了
  • 互联网行业常用12个数据分析指标和八大模型
  • 8.原型模式(Prototype)
  • 柔性芯片:实现万物互联的催化剂
  • ScreenshotToCode安装教程
  • 存储过程与自然语言处理逻辑的不同与结合
  • 模拟实现命令行解释器shell
  • 【C++初阶】第5课—动态内存管理
  • 混乱原理与程序设计。
  • clickhouse 使用global in 优化 in查询
  • 【VUE3】新版Vue3+ElementPlus全家桶开发视频项目实战
  • vxlan 手工隧道(头端复制)
  • burpsuite功能模块学习(2)
  • 后台管理-动态路由配置以及用户权限管理(vue3+element plus+koa+Sequelize )
  • android将pcm byte[]通过Librtmp进行rtmp推流
  • 【Flink-scala】DataStream编程模型之窗口计算-触发器-驱逐器
  • 深度学习:在PyTorch中进行模型验证完整流程
  • 【问题】webdriver.Chrome()设置参数executable_path报不存在
  • HDMI协议
  • AI是泡沫吗
  • Python语法基础(五)
  • 创建模态对话框窗口
  • SpringBoot 框架下的新冠密接者跟踪系统:卓越性能与稳定性保障