华为od真题--2023C卷-地图寻宝华为OD真题题解

小华地图寻宝

题目描述

小华按照地图去寻宝,地图上被划分成m行和n列的方格,横纵坐标范围分别是[0,n-1]和[0,m-1]。在横坐标和纵坐标的数位之和不大于k的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于k的方格存在危险不可进入。小华从入口(0,0)进入,任何时候只能向左,右,上,下四个方向移动一格。请问小华最多能获得多少克黄金?

输入描述

坐标取值范围如下:

0<=m<=50

0<=n<=50
k的取值范围如下:

0<=k<=100
输入中包含3个字数,分别是m,n,k

输出描述

最多能获得多少克黄金

 示例1

输入

40 40 18

输出

1484

public static void main(String[] args) {Scanner in = new Scanner(System.in);int m = in.nextInt(); // 输入地图的行数int n = in.nextInt(); // 输入地图的列数int k = in.nextInt(); // 输入限制条件kboolean[][] visited = new boolean[m][n]; // 记录位置是否被访问过int maxGold = dfs(0, 0, m, n, k, visited); // 从起点开始深度优先搜索System.out.println(maxGold); // 输出最大黄金数量}/*** 深度优先搜索算法函数,计算满足条件的情况下获得最大黄金数量* @param x 当前位置的横坐标* @param y 当前位置的纵坐标* @param m 地图的总行数* @param n 地图的总列数* @param k 限制条件* @param visited 记录位置是否被访问过的数组* @return 返回当前位置开始可能的最大黄金数量*/private static int dfs(int x, int y, int m, int n, int k, boolean[][] visited) {if(x < 0 || x >= m || y < 0 || y >= n || digitSum(x) + digitSum(y) > k || visited[x][y]){return 0; // 超出边界、数字和超过k、已访问过的情况返回0}visited[x][y] = true; // 标记当前位置为已访问int count = 1 + dfs(x + 1, y, m, n, k, visited) + dfs(x - 1, y, m, n, k, visited)+ dfs(x, y + 1, m, n, k, visited) + dfs(x, y - 1, m, n, k, visited);// 统计当前位置的黄金数量,并递归计算四个方向的黄金数量return count;}/*** 计算一个数的各个位上数字和* @param num 待计算数字* @return 返回数字的各个位上数字和*/private static int digitSum(int num) {int sum = 0;while (num != 0) {sum += num % 10; // 求余得到各个位上的数字num /= 10; // 更新num,去掉最低位}return sum;}

 解题思路使用深度优先搜索算法

  1. 使用深度优先搜索(DFS)算法来遍历地图上的每一个方格,同时满足条件时统计黄金数量。
  2. 在DFS过程中,对于每一个可以访问的方格,判断其横纵坐标的数位之和是否小于等于k,并且该位置没有被访问过。
  3. 递归地向四个相邻方向探索,累加当前位置的黄金数量,并标记当前位置为已访问。
  4. 返回递归过程中累积的黄金数量,即为小华最多能获得的黄金总量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编译执行篇

文章目录 11.1 compile()11.2 eval()11.3 exec()11.4 repr() 11.1 compile() 在Python中&#xff0c;compile()是一个内置函数&#xff0c;用于将字符串编译成字节码或AST&#xff08;抽象语法树&#xff09;对象&#xff0c;以便稍后被exec()或eval()函数执行。这对于执行动态…

2024最新华为OD机试试题库全 -【加密算法】- C卷

1. 🌈题目详情 1.1 ⚠️题目 有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。 规则如下: 明文为一段数字串由 0~9 组成 密码本为数字 0~9 组成的二维数组 需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是…

YOLOv8跟踪分割+单目测距(python)

YOLOv8跟踪分割+单目测距(python) 1. 相关配置2. 测距原理和相机标定2.1 测距原理2.2 相机标定3. 相机测距3.1 测距模块3.2 测距添加4. 实验效果4.1 创建主代码4.2 实验效果相关链接 1. YOLOV7 + 单目测距(python) 2. YOLOV5 + 单目测距(python)

XUbuntu22.04之安装Plantuml(二百二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

qemu启动过程笔记

1、进入main函数之前&#xff0c;会先注册所有的类&#xff0c;以spice为例 //定义结构 static struct QemuSpiceOps real_spice_ops {.init qemu_spice_init,.display_init qemu_spice_display_init,.migrate_info qemu_spice_migrate_info,.set_passwd qemu_s…

电脑不能读取移动硬盘,但是可以读取U盘解决方法

找到此电脑 右键设备管理器&#xff0c;找到其中的通用串行总线控制器。 注意&#xff0c;凡是插入到电脑当中不能读取的U盘或者移动硬盘&#xff0c;都会在通用串行总线控制器当中显示为USB大容量存储设备 鼠标选中“USB大容量存储设备”&#xff0c;右键卸载它。此时&#x…

AI生产中的缓存策略:降低成本提升性能

AI生产中的缓存策略&#xff1a;降低成本提升性能 概述&#xff1a; 大多数AI应用难以投入生产&#xff0c;主要障碍包括成本、性能和安全等。缓存策略在解决成本和性能问题上扮演了关键角色。 成本挑战&#xff1a; 运行AI模型尤其是大规模应用时成本很高。例如&#xff0c;…

地图定点热力图GeoJson

1.首先需要拿到地图&#xff0c;可以从不同的站点寻找&#xff0c;我这里是从hcharts里面找的 //国外地图数据地址&#xff1a; https://img.hcharts.cn/mapdata/ //国内地图数据地址&#xff1a; https://datav.aliyun.com/portal/school/atlas/area_selector2.在项目中引入e…

医院挂号系统设计与实现|jsp+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

蓝桥杯——朋友圈(防抖函数)

目标 请在 index.js 文件中补全代码&#xff0c;具体需求如下&#xff1a; 请将 debounce 函数补充完整&#xff0c;实现一个延迟为 delay 毫秒的防抖函数。用户在输入框&#xff08; idtext &#xff09;输入文字时&#xff0c;将用户输入的内容存入 localStorage 中&#x…

路由器里如何设置端口映射?

在互联网时代&#xff0c;我们经常需要将内部网络的服务暴露到公网以便其他人访问。直接将内部网络暴露在公网上存在一定的安全风险。为了解决这个问题&#xff0c;我们可以利用路由器里设置端口映射来实现将特定端口的访问请求转发到内部网络的特定设备上。 端口映射的原理 端…

Leetcode 3091. Apply Operations to Make Sum of Array Greater Than or Equal to k

Leetcode 3091. Apply Operations to Make Sum of Array Greater Than or Equal to k 1. 解题思路2. 代码实现 题目链接&#xff1a;3091. Apply Operations to Make Sum of Array Greater Than or Equal to k 1. 解题思路 这一题的话本质上算是一个数学题&#xff0c;具体就…

Matplotlib数据可视化实战-2绘制折线图(1)

函数plot是matplotlib.pyplot模块中的一个重要函数&#xff0c;用于在图形中绘制折线图。其基本用法是plot(x, y, [fmt], **kwargs)&#xff0c;其中x和y分别代表X轴和Y轴上的数据点&#xff0c;通常是以列表、数组或一维序列的形式给出。通常用的参数有&#xff1a; 基本参数…

Programming Abstractions in C阅读笔记:p331-p337

《Programming Abstractions in C》学习第79天&#xff0c;p331-p337&#xff0c;总计7页。 一、技术总结 /** File: stack.h* -------------* This interface defines an abstraction for stacks. In any* single application that uses this interface, the values in* the…

IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS (T-ITS) 投稿记录,欢迎大家评论~

投稿整个流程时间点&#xff1a;Submitted: 17 October 2023 Awaiting Reviewer Assignment: From 18 October 2023 to 6 November 2023 Under review: From 6 November 2023 to 30 November 2023 Awaiting reviewer scores: From 1 December 2023 to 13 January 2024 Aw…

【课程】Java构架师42套阶段课程

01.第一阶段、Svn版本管理与代码上线架构方案 02.第二阶段、实战Java高并发程序设计模式视频 03.第三阶段、深入JVM内核一原理、诊断与优化 04.第四阶段、基于Netty的RPC架构实战演练 05.第五阶段、Git分布式版本控制系统权威指南 06.第六阶段、Redis从入门到精通、集群与应用 …

Unity学习笔记 6.2D换帧动画

下载源码 UnityPackage 目录 1.导入图片 1.1. 图片的叠放顺序 2.图片切片 3.用动画控制器让马&#x1f40e;动起来 1.导入图片 直接拖拽进场景 检查 Texture Type&#xff08;纹理类型&#xff09;是否为 Sprite 创建2D精灵对象&#xff0c;拖拽图片到Sprite&#xff08…

【tips】Git使用指南

文章目录 一、Git介绍1. 什么是Git2.Git对比SVN3.Git安装 二.Git常用命令1. git config2. 初始化本地库3. 工作区、暂存区和版本库4. git add5. git commit6. git reset 与 git revertgit resetgit revert 三. Git 分支1.初识分支2.创建分支3.切换分支4.合并分支5.删除分支 四.…

6.4 Dropout正则化

1、Dropout Dropout是一种正则化技术&#xff0c;通过防止特征的协同适应&#xff0c;可用于减少神经网络中的过拟合。 Dropout的效果非常好&#xff0c;实现简单且不会降低网络速度&#xff0c;被广泛使用。 特征的协同适应指的是在训练模型时&#xff0c;共同训练的神经元…

【算法篇】逐步理解动态规划1(斐波那契数列模型)

目录 斐波那契数列模型 1. 第N个泰波那契数 2.使用最小花费爬楼梯 3.解码方法 学过算法的应该知道&#xff0c;动态规划一直都是一个非常难的模块&#xff0c;无论是状态转移方程的定义还是dp表的填表&#xff0c;都非常难找到思路。在这个算法的支线专题中我会结合很多力…