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

蓝桥杯 - 穿越雷区

解题思路:

dfs

方法一:

import java.util.Scanner;public class Main {static char[][] a;static int[][] visited;static int[] dx = { 0, 1, 0, -1 };static int[] dy = { 1, 0, -1, 0 };static long min = Long.MAX_VALUE;static long count = 0;public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();a = new char[n][n];visited = new int[n][n];int startx = 0;int starty = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {a[i][j] = in.next().charAt(0);if (a[i][j] == 'A') {startx = i;starty = j;}}}dfs(startx, starty, n);if(min == Integer.MAX_VALUE) min = -1;System.out.println(min);}public static void dfs(int x, int y, int n) {visited[x][y] = 1;if (a[x][y] == 'B') {min = Math.min(min, count);return;}for (int i = 0; i < 4; i++) {int xx = x + dx[i];int yy = y + dy[i];if (xx >= 0 && xx < n && yy >= 0 && yy < n && a[xx][yy] != a[x][y] && visited[xx][yy] == 0) {count++;dfs(xx, yy, n);visited[xx][yy] = 0;count--;}}}}

方法二:

时间复杂度更低,不易超时

import java.util.Scanner;public class Main {static char[][] a;static int[][] visited;static int[] dx = { 0, 1, 0, -1 };static int[] dy = { 1, 0, -1, 0 };static int min = Integer.MAX_VALUE;static int n;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();a = new char[n][n];visited = new int[n][n];String str[] = new String[n];int startx = 0;int starty = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {a[i][j] = in.next().charAt(0);visited[i][j] = Integer.MAX_VALUE;if (a[i][j] == 'A') {startx = i;starty = j;}}}dfs(startx, starty, 0);if (min == Integer.MAX_VALUE)min = -1;System.out.println(min);}public static void dfs(int x, int y, int step) {visited[x][y] = step;if (a[x][y] == 'B') {min = Math.min(min, step);return;}for (int i = 0; i < 4; i++) {int xx = x + dx[i];int yy = y + dy[i];if (xx >= 0 && xx < n && yy >= 0 && yy < n && a[xx][yy] != a[x][y] && visited[x][y] + 1 < visited[xx][yy]) {dfs(xx, yy, step + 1);}}}
}

相关文章:

  • 全面探究 LangChain Text Splitters
  • 在虚拟机尝试一次用启动盘重装系统
  • P1162 填涂颜色
  • Bigtable [OSDI‘06] 论文阅读笔记
  • 第四题:扫雷
  • C语言关于随机数知识点的总结
  • LeetCode 5. 最长回文子串
  • 云原生:应用敏捷,华为视角下的应用现代化
  • 黑马鸿蒙笔记
  • 力扣热题100_链表_138_随机链表的复制
  • Acwing2024蓝桥杯区间合并
  • 34-3 SSRF漏洞 - ssrf业务场景及挖掘
  • Ubuntu下TexStudio如何兼容中文
  • 简析数据安全保护策略中的十个核心要素
  • 【精品整理】最新数据安全评估标准合集
  • Angular数据绑定机制
  • Java到底能干嘛?
  • Java反射-动态类加载和重新加载
  • Joomla 2.x, 3.x useful code cheatsheet
  • Laravel Telescope:优雅的应用调试工具
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • PHP变量
  • vue中实现单选
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何实现 font-size 的响应式
  • 我与Jetbrains的这些年
  • 消息队列系列二(IOT中消息队列的应用)
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 从如何停掉 Promise 链说起
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #微信小程序:微信小程序常见的配置传旨
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (day 12)JavaScript学习笔记(数组3)
  • (javascript)再说document.body.scrollTop的使用问题
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (vue)页面文件上传获取:action地址
  • (多级缓存)多级缓存
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • .NET 4.0中的泛型协变和反变
  • .NET6 命令行启动及发布单个Exe文件
  • .net下的富文本编辑器FCKeditor的配置方法
  • //解决validator验证插件多个name相同只验证第一的问题
  • @JSONField或@JsonProperty注解使用
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [Android Studio] 开发Java 程序
  • [BROADCASTING]tensor的扩散机制
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • [hive] posexplode函数