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

华为OD机考-亲子游戏-BFS(JAVA 2025B卷 200分)

在这里插入图片描述
在这里插入图片描述

package od;import java.util.*;/*** @version Ver 1.0* @date 2025/6/18* @description 亲子游戏*/
public class FamilyGames {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = Integer.parseInt(scanner.nextLine().trim());int[][] matrix = new int[N][N];int startX=0,startY=0,endX=0,endY=0;for (int i = 0; i < N; i++) {int[] array = Arrays.stream(scanner.nextLine().trim().split(" ")).mapToInt(Integer::parseInt).toArray();for (int j = 0; j < N; j++) {matrix[i][j] = array[j];if(matrix[i][j] == -3){startX = i;startY= j;}}}solve(matrix,startX,startY);}private static void solve(int[][] matrix, int startX,int startY){LinkedList<int[]> queue = new LinkedList<>();List<int[]> list = new ArrayList<>();int[][] directions = new int[][]{{0,1}, //右{1,0},//下{0,-1},//左{-1,0}};//上// 将起点加入队列queue.add(new int[]{startX,startY,0,0});while(!queue.isEmpty()){int[] ints = queue.poll();if(matrix[ints[0]][ints[1]]==-2){list.add(new int[]{ints[2],ints[3]});continue;}for(int i =0;i<4;i++){int x = ints[0]+directions[i][0];int y = ints[1]+directions[i][1];if(x>=0 && x<matrix.length && y>=0 && y<matrix[0].length){if(matrix[x][y]==-2){// 到达终点,价值不变,步数加1queue.add(new int[]{x,y,ints[2],ints[3]+1});}else if(matrix[x][y]>=0){//未到终点,价值加上当前值,步数加1,并将当前位置置为-1,避免重复访问//TODO 可以再剪枝优化下,引入二维数组存储步数,价值,步数更小,价值更高时add to queuequeue.add(new int[]{x,y,ints[2]+matrix[x][y],ints[3]+1});matrix[x][y]=-1;}}}}// 输出结果if(list.isEmpty()){System.out.println("-1");return;}list.sort((o1,o2)->{if(o1[1]==o2[1]){return o2[0]-o1[0];//价值降序}return o1[1]-o2[1];//步数升序});System.out.println(list.get(0)[0]);}
}
http://www.lqws.cn/news/453421.html

相关文章:

  • OCCT基础类库介绍:Modeling Algorithm - Sewing
  • 如何正确处理音频数据:16位整数与32位浮点数
  • Agent轻松通-P3:分析我们的Agent
  • CppCon 2017 学习:Mocking Frameworks Considered
  • 您的元服务存在问题,不符合元服务UX设计规范
  • 从零开始:飞牛云NAS+Docker搭建WordPress全流程
  • (链表:哈希表 + 双向链表)146.LRU 缓存
  • XML在线格式化工具
  • MySQL基础多表查询
  • docker安装datax详细步骤
  • AUTOSAR实战教程--OS调试利器ORTI文件使用说明OSEK调试方法
  • OBCP第二章 OceanBase 存储引擎高级技术学习笔记
  • 63 网络交互的过程中目标设备的选择
  • PROFIBUS DP 转 EtherCAT 网关:冶金自动化高效协同的基石
  • 深入剖析HashMap与LinkedHashMap应用
  • 前端页面Javascript数组
  • python之使用cv2.matchTemplate识别缺口滑块验证码---实现最佳图像匹配
  • 主流测距技术深度解析:激光雷达、UWB、微波与视觉方案的全面对比
  • 今日行情明日机会——20250620
  • 响应式数据可视化大屏解决方案,重构工业交互体验
  • 【深度学习基础与概念】笔记(一)深度学习革命
  • 【Golang】go build 命令选项-ldflags用法
  • Spring @ModelAttribute注解全解析:数据绑定与模型管理
  • ceph 通过 crush rule 修改故障域
  • DataWhale-零基础络网爬虫技术(二er数据的解析与提取)
  • LeetCode热题100—— 169. 多数元素
  • leetcode 291. Word Pattern II和290. Word Pattern
  • 解锁数据宝藏:数据挖掘之数据预处理全解析
  • 在Django中把Base64字符串保存为ImageField
  • 思辨场域丨AR技术如何重塑未来学术会议体验?