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

BFS之最短路径模型

当一个图的每个边的权重都一样的时候,会有一个最短路径模型。不需要考虑边的影响。

1076. 迷宫问题 - AcWing题库

#include<iostream>
#include<queue>
#include<utility>
#include<algorithm>
#include<stack>
using namespace std;
const int N = 1010;
typedef pair<int,int> PII;
int g[N][N];  //存储地图
bool st[N][N]; //存储状态
PII pre[N][N];//存储前一个点
int n;
PII track[N];
int k=0;
int dx[] = {-1,0,1,0};
int dy[] = {0,1,0,-1};void bfs(int sx,int sy){queue<PII> q;q.push(make_pair(sx,sy));st[sx][sy] = true;while(!q.empty()){PII t = q.front();q.pop();for(int i=0;i<4;i++){int nx = t.first + dx[i];int ny = t.second + dy[i];if(nx >=0 && nx<n && ny>=0 && ny<n && g[nx][ny]==0 && st[nx][ny]==false){pre[nx][ny] = t;q.push(make_pair(nx,ny));st[nx][ny] = true;}// if(nx<0 || nx>n-1 || ny<0 || ny>n-1) continue;// if(st[nx][ny]) continue;// if(g[nx][ny]==1) continue;// pre[nx][ny] = t;// q.push(make_pair(nx,ny));// st[nx][ny] = true;}}
}int main(){cin>>n;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>g[i][j];pre[i][j] = {-1, -1};}}bfs(0,0);stack<PII> s;PII present = pre[n-1][n-1];while(true){s.push(present);if(present.first==0 && present.second==0) break;present = pre[present.first][present.second];}while(!s.empty()){PII v = s.top();s.pop();cout<<v.first<<" "<<v.second<<endl;}cout<<n-1<<" "<<n-1<<endl;return 0;
}

马走日模型

188. 武士风度的牛 - AcWing题库

#include<iostream>
#include<utility>
#include<queue>
#include<algorithm>
using namespace std;
typedef pair<int,int> PII;
PII start,end;
const int N = 160;
int n,m,res=-1;
char g[N][N];
bool st[N][N];
bool flag;
int dist[N][N];
int dx[] = {-2,-1,1,2,2,1,-1,-2};
int dy[] = {1,2,2,1,-1,-2,-2,-1};void bfs(int sx,int sy){queue<PII> q;q.push(make_pair(sx,sy));st[sx][sy] = true;while(!q.empty()){if(flag) break;PII t = q.front();q.pop();for(int i=0;i<8;i++){int nx = t.first + dx[i];int ny = t.second + dy[i];if(nx <1 || nx >n || ny <1 || ny>m) continue;//不能越界if(st[nx][ny]) continue;//遍历过的不能再次遍历if(g[nx][ny]=='*') continue;//不能在*上面if(g[nx][ny]=='H'){  //走到有草的地方了,立即暂停并打印cout<<dist[t.first][t.second]+1;flag = true;break;}q.push(make_pair(nx,ny));st[nx][ny] = true;dist[nx][ny] = dist[t.first][t.second]+1;}}
}int main(){cin>>m>>n;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>g[i][j];if(g[i][j]=='K'){start.first = i;start.second = j;}}}// for(int i=1;i<=n;i++){  //检查输入//     for(int j=1;j<=m;j++){//         cout<<g[i][j];//     }//     cout<<endl;// }bfs(start.first,start.second);return 0;
}

相关文章:

  • 解决银河麒麟V10中/data目录执行权限问题
  • JDK1.8安装配置教程(图文结合,最简洁易懂)
  • undeclared identifier ‘UNITY_PREV_MATRIX_M‘ - Unity Shader自己写URP,引用内部 hlsl
  • 15年408计算机网络
  • FPGA-Vivado-IP核-逻辑分析仪(ILA)
  • 机器学习和深度学习的区别
  • 多模态——基于XrayGLM的X光片诊断的多模态大模型
  • MYSQL(学习笔记)
  • STM32F407之Flash
  • 3.4 爬虫实战-爬去智联招聘职位信息
  • 演示:基于WPF的DrawingVisual开发的频谱图和律动图
  • 【分布式微服务云原生】10分钟打造坚不可摧的系统:深入探索系统的鲁棒性
  • 在树莓派上基于 LNMP 搭建 Nextcloud
  • 图灵完备-奇数个信号
  • 百度智能体创建:情感领域的创新力量
  • JavaScript-如何实现克隆(clone)函数
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【RocksDB】TransactionDB源码分析
  • EOS是什么
  • Java IO学习笔记一
  • JAVA SE 6 GC调优笔记
  • js算法-归并排序(merge_sort)
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python 基础起步 (十) 什么叫函数?
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Webpack 4x 之路 ( 四 )
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 订阅Forge Viewer所有的事件
  • 仿天猫超市收藏抛物线动画工具库
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 计算机在识别图像时“看到”了什么?
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​批处理文件中的errorlevel用法
  • !$boo在php中什么意思,php前戏
  • #pragma 指令
  • (4.10~4.16)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (十八)三元表达式和列表解析
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)linux 命令大全
  • (转载)(官方)UE4--图像编程----着色器开发
  • (轉)JSON.stringify 语法实例讲解
  • *** 2003
  • *上位机的定义
  • .bat批处理(六):替换字符串中匹配的子串
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core中Emit的使用
  • .NET 使用配置文件
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .net经典笔试题