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

马的遍历

2025.9.14 曹立

题目内容

有一个 \(n \times m\) 的棋盘,在某个点 \((x,y)\) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步

输入描述

输入只有一行四个整数,分别为 \(n,m,x,y\)

输出描述

一个 \(n \times m\) 的矩阵,代表马到达某个点最少要走几步(不能到达则输出 \(-1\)

输入输出样例

输入

3 3 1 1

输出

0 3 2
3 -1 1
2 1 4

C++实现

#include<iostream>
#include<queue>
using namespace std;
struct node{long long x,y;
};
long long n,m,x,y,vis[405][405],mark[405][405],cnt=0;
int dx[10]={2,2,1,1,-1,-1,-2,-2};
int dy[10]={1,-1,2,-2,2,-2,1,-1};
queue<node> q;
void putit()
{for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<mark[i][j]<<" ";}cout<<endl;}
}
void bfs()
{for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)mark[i][j]=-1;q.push(node{x,y});mark[x][y]=0;while(!q.empty()){node temp=q.front();q.pop();for(int i=0;i<8;i++){long long xx=temp.x+dx[i],yy=temp.y+dy[i];if(xx>n || yy>m || xx<1 || yy<1 || mark[xx][yy]!=-1){continue;}q.push(node{xx,yy});mark[xx][yy]=mark[temp.x][temp.y]+1;}}
}
int main(void)
{cin>>n>>m>>x>>y;bfs();putit();return 0;} 
http://www.wxhsa.cn/company.asp?id=3610

相关文章:

  • 20231310王宏邦《密码系统设计》第1周
  • 新学期第一次随笔:慢慢学,总会有进步
  • 详细介绍:【C语言】第四课 指针与内存管理
  • 知识点错题整理
  • 202311_陇剑杯预赛_tcpdump
  • Linux学习记录(六):添加/删除用户
  • python 链式调用 合并 __setattr__ __getattribute__ in nested object()
  • 分享一个稳定好用的免费云服务——阿贝云体验
  • 年化439%,回撤7%,卡玛比率62.5,附本地运行的完整策略python代码 - 详解
  • 接口测试---PyMysql
  • My First Blog
  • 设置基础软件仓库时出错
  • linux c应用性能与内存泄露问题排查工具
  • 深入解析:AI-调查研究-66-机器人 机械臂 软件算法体系:轨迹规划视觉定位力控策略
  • VS Code快捷键
  • API安全厂商综合推荐:2025年权威视角下的主流厂商评估与选型指南
  • 基于FPGA的8PSK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR
  • 去去就来
  • 使用 CUDA 12.9 编译 PyTorch 2.4.0
  • 豆包生成C#即梦API HTTP调用实例代码
  • 解析几何笔记
  • 基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
  • 详细介绍:boost::circular_buffer的使用方法简介
  • 基于禁忌搜索算法的TSP问题最优路径搜索matlab仿真
  • PDD9.14 笔试 - 浪矢
  • 增肌,减脂,变瘦的联系和区别
  • (eval):1: _python-argcomplete: function definition file not found
  • 详细介绍:【Spring Boot 报错已解决】Web server failed to start. Port 8080 was already in use.
  • Nordic Neuton.AI 技术优势;
  • channel Sounding 工作流程