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

P1443 马的遍历

题目描述:

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

代码:

package lanqiao;import java.util.*;public class Main {static int n,m,x,y;static int[][] a = new int[410][410];static int[] aa = new int[] {2, 1, 2, -1, -2, -1, -2, 1};static int[] bb = new int[] {1, 2, -1, -2, -1, 2, 1, -2};public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();x = sc.nextInt();y = sc.nextInt();//初始化数组for(int i = 1;i <= n;i ++){for(int j = 1;j <= m;j ++){a[i][j] = -1;}}dfs(x,y,0);a[x][y] = 0;for(int i = 1;i <= n;i ++){for(int j = 1;j <= m;j ++){System.out.printf("%-5d", a[i][j]);}System.out.println();}}public static void dfs(int x,int y,int t){if(t >200) //DFS不加剪枝的话需要加阙值{return;}a[x][y] = t;for(int i = 0;i < 8;i ++){if(x + aa[i] >= 1 && y + bb[i] >= 1 && x + aa[i] <= n && y + bb[i] <= m&& (a[x + aa[i]][y + bb[i]] == -1 || a[x + aa[i]][y + bb[i]] > t + 1))//需要对未走过的格子,或者新路线步数较短的格子进行重新赋值{dfs(x + aa[i],y + bb[i],t + 1);}}}
}

http://www.lryc.cn/news/346736.html

相关文章:

  • AI学习指南概率论篇-贝叶斯推断
  • 大数据测试
  • 金融业开源软件应用 管理指南
  • SolidWorks 齿轮配合
  • 鸿蒙开发-ArkTS语言-XML
  • 网安面经之文件上传漏洞
  • 如何使用 WavLM音频合成模型
  • 学习java第六十七天
  • Linux(Ubuntu24.04) 安装 MinIO
  • 视频汇聚边缘网关EasyCVR硬件设备无法访问域名,解析失败该如何处理?
  • 差速机器人模型LQR 控制仿真(c++ opencv显示)
  • 探索设计模式的魅力:权力集中,效率提升,中心化模式的优势与挑战
  • uniapp0基础编写安卓原生插件之编写安卓页面在uniapp上显示(摄像头调用)
  • fastapi数据库连接池的模版
  • 如何批量将十六进制数据转成bin文件
  • 知识付费程序源码_30秒轻松搭建知识付费小程序_免费试用,知识付费工具有哪些?哪个比较好用?
  • 【系统架构师】-案例篇(九)容器化、CDN与微服务
  • OpenAI工作原理及核心机制
  • JVM调优-调优原则和原理分析
  • dell服务器安装ubuntu18.04桌面版教程
  • 医疗图像处理2023年CVPR:Label-Free Liver Tumor Segmentation-无标签肝肿瘤分割
  • 远程桌面如何连接?
  • Centos 停服倒计时!你的操作系统何去何从?
  • ITMS-91053: Missing API declaration
  • iOS 裁剪图片
  • 算法训练营第60天|LeetCode 647.回文子串 516.最长回文子序列
  • 读天才与算法:人脑与AI的数学思维笔记25_涌现理论
  • C/C++ IPV6服务器socket绑定在::,接受ipv4链接(双栈)
  • 【Win10设备管理器中无端口选项】
  • 「YashanDB迁移体验官」Oracle向YashanDB迁移的丝滑体验