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

广搜bfs-P1443 马的遍历

P1443 马的遍历

题目来源-洛谷

在这里插入图片描述

题意

要求马到达棋盘上任意一个点最少要走几步

思路

  • 国际棋盘规则是马的走法是-日字形,也称走马日,即x,y一个是走两步,一个是一步

  • 要求最小步数,所以考虑第一次遍历到的点即为最小步数,即bfs宽搜处理

  • 套模板,遍历的可能即为当前位置的不同走法,借助数组来处理

    int zx[] = {1,1,-1,-1,2,2,-2,-2} ; int zy[] = {2,-2,2,-2,1,-1,1,-1};坐标入队时即刻更新步数即可

参考代码

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 405;
void bfs(int x,int y);
int m,n;//n行m列
struct node{int x,y;
};
queue <node> q;
int zx[] = {1,1,-1,-1,2,2,-2,-2} ;
int zy[] = {2,-2,2,-2,1,-1,1,-1};
bool f[MAXN][MAXN] = {false};
int ans[MAXN][MAXN] ;
int main(){int x0,y0; cin>>n>>m>>x0>>y0;bfs(x0,y0) ;return 0;
}
void bfs(int x,int y){//node k = (x,y);//直接创建一个结构体 -这种建法需要做自定义函数 node k = node{x,y} ;q.push(k);f[x][y] = true;while(!q.empty()){int x1 = q.front().x,y1 = q.front().y ;//取出队首 q.pop();//弹出队首 for(int i=0;i<8;i++){int nx = x1+zx[i],ny = y1+zy[i];//忘八个方向遍历 if(nx<1||nx>n||ny<1||ny>m||f[nx][ny]) continue;//越界或者被访问过则访问下一个点q.push((node){nx,ny});//该点入队 ans[nx][ny] = ans[x1][y1]+1 ; //该点一定是马从(x1,y1)点走过来的 f[nx][ny] = true;//标记 }}//输出答案for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(f[i][j] ) cout<<ans[i][j]<<" ";else cout<<-1<<" ";//没被访问过说明没办法走到,-1 }cout<<endl;} return ;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/140123.html

相关文章:

  • 8.Rust+Axum 数据库集成实战:从 ORM 选型到用户管理系统开发
  • Python爬虫实战: 有道翻译
  • Qt 创建QWidget的界面库(DLL)
  • Jenkins 多分支管道
  • 主动防御VS自动化筛查:渗透测试与漏洞扫描的深度攻防指南
  • #systemverilog# 进程控制问题#(八)关于#0 问题的使用(三)
  • shell脚本
  • 基于Ubuntu22.04和OpenCV4.5.4的物联网人脸识别考勤机
  • SpringBoot私人西服系统开发与设计
  • FreeRTOS任务通知
  • linux如何手动设置域名与 IP 地址的映射关系
  • iOS 冷启动时间监控:启动起点有哪些选择?
  • 从零构建 Vue3 登录页:结合 Vant 组件与 Axios 实现完整登录功能
  • 【Datawhale Al春训营】气象预测(AI+航空安全)竞赛笔记
  • ProjectChrono安装
  • Oracle 19c部署之手工建库(四)
  • Axios的使用
  • 选择 iOS 按键精灵无根有根越狱辅助工具的理由
  • 【Spring Boot】MyBatis入门:连接Mysql数据库、测试单元、连接的常见错误
  • PyTorch深度学习框架60天进阶学习计划 - 第45天:神经架构搜索(二)
  • Netlink套接字
  • Starrocks 数据均衡DiskAndTabletLoadReBalancer的实现
  • DBeaver连接hive
  • DasViewer是什么?如何安装?
  • AI 组件库是什么?如何影响UI的开发?
  • 华为OD机试真题——最长的顺子(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • PyTorch 浮点数精度全景:从 float16/bfloat16 到 float64 及混合精度实战
  • PyTorch分布式训练调试方法(跟踪调用过程)
  • java 排序算法-快速排序
  • # 使用 PyTorch 构建并训练一个简单的 CNN 模型进行图像分类