华为OD机试真题---智能驾驶
华为OD机试中的“智能驾驶”题目是一道涉及广度优先搜索(BFS)算法运用的题目。以下是对该题目的详细解析:
一、题目描述
有一辆汽车需要从m * n的地图的左上角(起点)开往地图的右下角(终点),去往每一个地区都需要消耗一定的油量,加油站可进行加油。请你计算汽车确保从起点到达终点时所需的最少初始油量。
二、地图说明
-
智能汽车可以上下左右四个方向移动。
-
地图上的数字取值是0、-1或正整数:
- -1:表示加油站,可以加满油,汽车的油箱容量最大为100。
- 0:表示这个地区是障碍物,汽车不能通过。
- 正整数:表示汽车走过这个地区的耗油量。
-
如果汽车无论如何都无法到达终点,则返回-1。
三、输入描述
第一行为两个数字M、N,表示地图的大小为M * N(0 < M, N ≤ 200)。后面一个M * N的矩阵,其中的值是0、-1或正整数,加油站的总数不超过200个。
四、输出描述
如果汽车无论如何都无法到达终点,则返回-1;如果汽车可以到达终点,则返回最少的初始油量。
五、解题思路
- 状态表示与搜索:使用广度优先搜索(BFS)来遍历地图。需要记录汽车的当前位置(x, y)和当前的剩余油量fuel。同时,使用一个minfuel[x][y]数组来记录到达(x, y)所需的最小初始油量。
- 加油站处理:当汽车到达一个加油站(地图值为-1)时,油量将被充满至100。
- 油量计算:当从一个点移动到另一个点时,需要根据地图上的数值来增减油量。
- 边界与障碍物处理:如果遇到障碍物(地图值为0),该方向将不被考虑。同时需要确保汽车在任何时刻的油量都不为负。
六、具体实现
可以使用队列来实现BFS算法,每次从队列中取出一个节点,并检查它的相邻节点。如果相邻节点是目标节点,则搜索结束;否则,将相邻节点加入队列中。在搜索过程中,需要维护一个maxfuel数组来记录到达每个位置所需的最小初始油量。
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;class State {int x, y, fuel;State(int x, int y, int fuel) {this.x = x;this.y = y;this.fuel = fuel;}
}public class SmartDriving {private static final int MAX_FUEL = 100;private static final int[][] DIRECTIONS = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};/*** 计算到达目的地所需的最小初始燃料量** @param m 表示网格的行数* @param n 表示网格的列数* @param grid 表示网格,其中0表示障碍物,1表示可通过的路径* @return 返回到达目的地所需的最小初始燃料量,如果无法到达则返回-1*/public static int minInitialFuel(int m, int n, int[][] grid) {// 检查起点和终点是否为障碍物,如果是,则无法到达目的地if (grid[0][0] == 0 || grid[m-1][n-1] == 0) {return -1;}// 初始化二分查找的边界int left = 0, right = MAX_FUEL;// 初始化结果为-1,表示无法到达目的地int result = -1;// 使用二分查找确定最小初始燃料量while (left <= right) {// 计算中间值int mid = (left + right) / 2;// 检查当前燃料量是否可以到达目的地if (canReach(grid, m, n, mid)) {// 如果可以到达,更新结果并继续在左侧搜索更小的燃料量result = mid;right = mid - 1;} else {// 如果无法到达,说明燃料量不足,继续在右侧搜索left = mid + 1;}}// 返回最小初始燃料量return result;}/*** 判断是否能够到达目的地** @param grid 二维数组表示的地图,其中-1表示加油站,0表示障碍物,其他正数表示该地点的耗油量* @param m 地图的行数* @param n 地图的列数* @param initialFuel 初始油量* @return 如果能够到达地图的右下角(目的地),返回true;否则返回false*/private static boolean canReach(int[][] grid, int m, int n, int initialFuel) {// 使用队列来实现广度优先搜索Queue<State> queue = new LinkedList<>();// maxFuel数组用于记录到达每个位置时的最大油量int[][] maxFuel = new int[m][n];// 初始化maxFuel数组,所有值设为-1,表示尚未到达for (int[] row : maxFuel) {java.util.Arrays.fill(row, -1);}// 计算初始油量,减去起点的耗油量int startFuel = initialFuel - grid[0][0];// 如果初始油量小于0,则无法开始旅程,返回falseif (startFuel < 0) {return false;}// 如果起点是加油站,初始油量设为最大值if (grid[0][0] == -1) {startFuel = MAX_FUEL;}// 将起点加入队列,并更新到达起点时的最大油量queue.offer(new State(0, 0, startFuel));maxFuel[0][0] = startFuel;// 使用广度优先搜索遍历地图while (!queue.isEmpty()) {// 取出队列头部的状态State state = queue.poll();int x = state.x, y = state.y, fuel = state.fuel;// 如果到达目的地,返回trueif (x == m - 1 && y == n - 1) {return true;}// 遍历四个可能的移动方向for (int[] dir : DIRECTIONS) {int nx = x + dir[0], ny = y + dir[1];// 检查新位置是否有效且不是障碍物if (0 <= nx && nx < m && 0 <= ny && ny < n && grid[nx][ny] != 0) {int newFuel = fuel;// 如果新位置是耗油区域,减少油量if (grid[nx][ny] > 0) {newFuel -= grid[nx][ny];}// 如果新位置是加油站,油量设为最大值if (grid[nx][ny] == -1) {newFuel = MAX_FUEL;}// 如果油量小于0,无法到达新位置,跳过if (newFuel < 0) {continue;}// 如果到达新位置的油量大于之前记录的最大油量,更新最大油量并加入队列if (newFuel > maxFuel[nx][ny]) {maxFuel[nx][ny] = newFuel;queue.offer(new State(nx, ny, newFuel));}}}}// 如果无法到达目的地,返回falsereturn false;}/*** 主函数,用于读取输入并计算最小初始燃料量*/public static void main(String[] args) {// 创建Scanner对象以读取输入Scanner scanner = new Scanner(System.in);// 读取网格的行数int m = scanner.nextInt();// 读取网格的列数int n = scanner.nextInt();// 根据读取的行数和列数创建二维数组int[][] grid = new int[m][n];// 遍历二维数组,读取每个网格单元的值for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {grid[i][j] = scanner.nextInt();}}// 调用minInitialFuel方法计算最小初始燃料量,并打印结果int result = minInitialFuel(m, n, grid);System.out.println(result);// 关闭Scanner对象scanner.close();}
}
七、测试用例
- 测试用例1:
输入
2 2
10 20
30 40
输出
70
说明:行走的路线为右->下。
- 测试用例2:
输入
3 3
0 10 10
10 10 10
10 10 10
输出
-1
说明:起点是障碍物,无法出发。
- 测试用例3:
输入
4 4
10 30 30 20
30 30 -1 10
0 20 20 40
10 -1 30 40
输出
70
说明:行走的路线为右->右->下->下->下->右。
通过这些测试用例,可以验证算法的正确性和有效性。
在您提供的Java程序中,我们实现了一个智能驾驶系统,该系统能够计算到达地图右下角(目的地)所需的最小初始燃料量。地图由二维数组grid
表示,其中每个元素的值代表该位置的耗油量(正数)或是否为加油站(-1
表示加油站,不耗油且能将油量补满;0
表示障碍物,无法通过)。
八、示例进行解析
输入示例
2 2
10 20
30 40
2 2
表示地图是2行2列的。- 接下来的两行数字表示地图的具体内容:
10 20 30 40
- 起点在
(0, 0)
,耗油量为10
。 - 终点在
(1, 1)
,耗油量为40
。 - 从起点到终点只有一条路径,即
(0, 0) -> (1, 1)
。
- 起点在
输出示例
70
解析
-
起点油量计算:
- 初始燃料量设为
X
(我们要找的最小值)。 - 起点耗油
10
,因此实际可用燃料为X - 10
。
- 初始燃料量设为
-
路径耗油:
- 从
(0, 0)
到(1, 1)
,需要耗油40
(因为终点耗油量为40
)。
- 从
-
燃料量计算:
- 为了让车辆能够到达终点,我们需要满足以下条件:
X - 10 >= 40
(即初始燃料量减去起点耗油后,仍需足够到达终点的燃料)。
- 解这个不等式,我们得到
X >= 50
。但是,由于路径上没有任何加油站,我们需要确保初始燃料量足够覆盖整个路径,并且考虑到起点和终点都是耗油位置,我们需要额外的燃料来确保在到达终点时不会因为油量不足而停下。 - 实际上,由于只有一条路径且没有加油站,我们需要计算从起点到终点的总耗油量,并加上一定的安全余量(在这个例子中,由于只有一步,所以安全余量就是终点的耗油量)。但是,由于我们的二分查找策略是从
0
到MAX_FUEL
(100)进行的,它会自动找到满足条件的最小值。
- 为了让车辆能够到达终点,我们需要满足以下条件:
-
二分查找:
- 程序通过二分查找来确定最小初始燃料量。在查找过程中,它会尝试不同的初始燃料量,并使用广度优先搜索(BFS)来检查是否能够到达终点。
- 在这个例子中,二分查找会发现
70
是满足条件的最小值,因为:- 初始燃料量为
70
时,起点实际可用燃料为60
(70 - 10
)。 - 从起点到终点耗油
40
,剩余20
,足够到达终点(尽管实际上在这个简单例子中我们不需要这额外的20
燃料,但二分查找策略会确保找到一个安全的最小值)。
- 初始燃料量为
九、结论
输出70
是正确的,因为它代表了能够确保车辆从起点安全到达终点所需的最小初始燃料量。在这个特定的例子中,由于路径上没有任何加油站,且起点和终点都是耗油位置,因此我们需要确保初始燃料量足够大,以覆盖整个路径并有一定的安全余量。二分查找和广度优先搜索的结合使用有效地找到了这个最小值。
相关文章:
华为OD机试真题---智能驾驶
华为OD机试中的“智能驾驶”题目是一道涉及广度优先搜索(BFS)算法运用的题目。以下是对该题目的详细解析: 一、题目描述 有一辆汽车需要从m * n的地图的左上角(起点)开往地图的右下角(终点)&a…...
视频质量评价SimpleVQA
目录 一、研究意义例子 二、介绍三、文章解读3.1 论文动机3.2论文思路3.3方法3.3.1网络框架3.3.2公式解读3.3.3核心创新3.3.4理解 !!!作者对模型的改进本人算法框体视频抽帧美学特征提取网络:3.3.5实验细节: 四、代码复…...
浏览器插件基于nativeMessaging通信
上一篇文章介绍了基于nativeMessaging启动本地程序,使用官方demo是支持双向通信,demo启动的程序是python写的,现在基于Qt程序进行说明。 消息传递协议 Chrome 会在单独的进程中启动每个原生消息传递主机,并使用标准输入 (stdin)…...
解决 MySQL 8.x 身份验证问题的最佳实践20241126
MySQL 8.x 身份验证问题的深入解析与实践解决方案 🎯 引言 🖋️ MySQL 是全球最受欢迎的开源数据库之一,随着 MySQL 8.x 的发布,引入了更安全的身份验证插件 caching_sha2_password,显著提升了数据库的安全性和性能。…...
对于GC方面,在使用Elasticsearch时要注意什么?
大家好,我是锋哥。今天分享关于【对于GC方面,在使用Elasticsearch时要注意什么?】面试题。希望对大家有帮助; 对于GC方面,在使用Elasticsearch时要注意什么? 1000道 互联网大厂Java工程师 精选面试题-Java…...
各种排序算法
前置知识 排序: 按照递增或者递减的顺序把数据排列好 稳定性: 值相等的元素在排序之后前后顺序是否发生了改变 内部排序: 数据放在内存上 外部排序: 数据放在磁盘上 内部排序 基于比较的排序 几大排序算法 1. 堆排序 特点: 思想: 1. 创建大根堆,把所有元素放在大根堆里…...
前端-Git
一.基本概念 Git版本控制系统时一个分布式系统,是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景:多人开发管理代码;异地开发,版本管理,版本回滚。 Git 的三个区域&a…...
用nextjs开发时遇到的问题
这几天已经基本把node后端的接口全部写完了,在前端开发时考虑时博客视频类型,考虑了ssr,于是选用了nextJs,用的是nextUi,tailwincss,目前碰到两个比较难受的事情。 1.nextUI个别组件无法在服务器段渲染 目前简单的解决方法&…...
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
yum install 报错: Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64 CentOS7的SCL源在2024年6月30日停止维护了。 当scl源里面默认使用了centos官方的地址,无法连接,需要替换为阿里云。 cd /etc/yum.repos.d/ 找到 CentOS-SCLo-scl.repo 和…...
HCIA笔记3--TCP-UDP-交换机工作原理
1. tcp协议 可靠的连接 1.1 报文格式 1.2 三次握手 1.3 四次挥手 为什么TIME_WAIT需要2MSL的等待时间? (a) 为了实现可靠的关闭 (b)为了让过期的报文在网络上消失 对于(a), 假设host发给server的last ack丢了。 ser…...
RabbitMQ原理架构解析:消息传递的核心机制
文章目录 一、RabbitMQ简介1.1、概述1.2、特性 二、RabbitMQ原理架构三、RabbitMQ应用场景3.1、简单模式3.2、工作模式3.3、发布订阅3.4、路由模式3.5 主题订阅模式 四、同类中间件对比五、RabbitMQ部署5.1、单机部署5.2、集群部署(镜像模式)5.3、K8s部署…...
C语言指针作业
//8-29 第八章作业 //3.输入10个整数,将其中最小的数第一个数对换,把最大的数与最后一个数对换 //写3个函数:①输人10个数;②进行处理;③输出10个数。 //①输人10个数, //方法一:数组索引 void main() {int arr[10];int *p arr;//printf("请输入…...
区块链:比特币-Binance
写在前面:相对于Tran和BNB而言,Binance不支持智能合约;大约每 10分钟 生成一个新区块 一、认识Binance 官方网站:Blockchain Explorer - Bitcoin Tracker & More | Blockchain.com 官方文档:Authentication – I…...
数据工程流程
** 数据工程流程图** #mermaid-svg-ArT55xCISSfZImy3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ArT55xCISSfZImy3 .error-icon{fill:#552222;}#mermaid-svg-ArT55xCISSfZImy3 .error-text{fill:#552222;stroke…...
使用Python和Pybind11调用C++程序(CMake编译)
目录 一、前言二、安装 pybind11三、编写C示例代码四、结合Pybind11和CMake编译C工程五、Python调用动态库六、参考 一、前言 跨语言调用能对不同计算机语言进行互补,本博客主要介绍如何实现Python调用C语言编写的函数。 实验环境: Linux gnuPython3.10…...
基于springboot的县市级土地使用监控系统的设计与实现
文末获取本系统(程序源码数据库调试部署开发环境)文末可获取,系统界面在最后面。 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的…...
Hot100 - 最大子数组和
Hot100 - 最大子数组和 最佳思路:动态规划 时间复杂度:O(n) 代码: class Solution {public int maxSubArray(int[] nums) {int sum 0;int ans Integer.MIN_VALUE;for (int i 0; i < nums.length; i) {// 如果 sum > 0,…...
Matlab 深度学习 PINN测试与学习
PINN 与传统神经网络的区别 与传统神经网络的不同之处在于,PINN 能够以微分方程形式纳入有关问题的先验专业知识。这些附加信息使 PINN 能够在给定的测量数据之外作出更准确的预测。此外,额外的物理知识还能在存在含噪测量数据的情况下对预测解进行正则…...
[STM32]从零开始的STM32 FreeRTOS移植教程
一、前言 如果能看到这个教程的话,说明大家已经学习嵌入式有一段时间了。还记得嵌入式在大多数时候指的是什么吗?是的,我们所说的学习嵌入式大部分时候都是在学习嵌入式操作系统。从简单的一些任务状态机再到复杂一些的RTOS,再到最…...
软件团队的共担责任
问责制被认为是个人与其社会系统之间的纽带,它创造了一种将个人与其行为和绩效联系起来的身份关系。在入门系列的第一篇文章《超越工具和流程:成功软件开发团队的策略》中,我们介绍了问责制的概念,并提出了以下定义: …...
代码美学:MATLAB制作渐变色
输入颜色个数n,颜色类型: n 2; % 输入颜色个数 colors {[1, 0, 0], [0, 0, 1]}; createGradientHeatmap(n, colors); 调用函数: function createGradientHeatmap(n, colors)% 输入检查if length(colors) ~ nerror(输入的颜色数量与n不一…...
Perforce SAST专家详解:自动驾驶汽车的安全与技术挑战,Klocwork、Helix QAC等静态代码分析成必备合规性工具
自动驾驶汽车安全吗?现代汽车的软件包含1亿多行代码,支持许多不同的功能,如巡航控制、速度辅助和泊车摄像头。而且,这些嵌入式系统中的代码只会越来越复杂。 随着未来汽车的互联程度越来越高,这一趋势还将继续。汽车越…...
大模型中常见的微调方法有哪些?
我整理了1000道算法面试题: 获取 这里说的微调主要是指参数微调,参数微调的方法主要有以下几种: - Adapter 在预训练模型每一层(或某些层)中添加Adapter模块(如上图左侧结构所示),微调时冻结预训练模型主体,由Ada…...
MATLAB支持的距离度量
距离度量是用于量化两个点或样本之间差异的一种方法。在不同的领域和应用场景中,距离度量的选择可能会有所不同。 欧几里得距离(Euclidean Distance):这是最直观的距离定义,适用于n维空间中的两点。对于二维空间中的点…...
c++编程玩转物联网:使用芯片控制8个LED实现流水灯技术分享
在嵌入式系统中,有限的GPIO引脚往往限制了硬件扩展能力。74HC595N芯片是一种常用的移位寄存器,通过串行输入和并行输出扩展GPIO数量。本项目利用树莓派Pico开发板与74HC595N芯片,驱动8个LED实现流水灯效果。本文详细解析项目硬件连接、代码实…...
LSA详情与特殊区域
LSA是构成LSDB的重要原材料,在OSPF中发挥很大作用。 报文 通用头部 LS age:LSA寿命,0-3600s Options:可选项 LS type:LSA类型,三要素之一 Link State ID:LSAID 三要素之一 Advertising Ro…...
Leecode刷题C语言之交替组①
执行结果:通过 执行用时和内存消耗如下: 代码如下: int numberOfAlternatingGroups(int* colors, int colorsSize) {int res 0;for (size_t i 0; i < colorsSize; i) {if (colors[i] ! colors[(i - 1 colorsSize) % colorsSize] && col…...
深入解析 Django 中数据删除的最佳实践:以动态管理镜像版本为例
文章目录 引言场景与模型设计场景描述 删除操作详解1. 删除单个 Tag2. 批量删除 Tags3. 删除前确认4. 日志记录 高阶优化与问题分析1. 外键约束与误删保护2. 并发删除的冲突处理3. 使用软删除 结合 Django Admin 的实现总结与实践思考 引言 在现代应用开发中,服务和…...
4457数字示波器 2Gpts的深度存储
4457数字示波器 2Gpts的深度存储 256级灰度等级及四种波形色彩显示 4457M系列数字示波器,带宽从1GHz到4GHz,采样率10GSa/s、20GSa/s,垂直分辨率12bit,存储深度1Gpts,最快波形捕获率70万个波形/秒,独创的…...
【笔记】轻型民用无人驾驶航空器安全操控
《轻型民用无人驾驶航空器安全操控》 理论考试培训材料 法规部分 【民用无人驾驶航空器的分类】 1、如何定义微型、轻型无人驾驶航空器? 微型无人驾驶航空器,是指空机重量小于0.25千克,最大平飞速度不超过40千米/小时,无线电发…...
【leetcode】动态规划
31. 873. 最长的斐波那契子序列的长度 题目: 如果序列 X_1, X_2, ..., X_n 满足下列条件,就说它是 斐波那契式 的: n > 3对于所有 i 2 < n,都有 X_i X_{i1} X_{i2} 给定一个严格递增的正整数数组形成序列 arr ࿰…...
嵌入式linux系统中图像处理基本方法
目录 2.1 BMP图像处理 2.1.1 BMP文件格式解析 2.1.2 代码实现:将BMP文件解析为RGB格式,在LCD上显示 2.2 JPEG图像处理 2.2.1 JPEG文件格式和libjpeg编译 2.2.2 libjpeg接口函数的解析和使用 2.2.3 使用libjpeg把JPEG文件解析为RGB格式,在LCD上显示 …...
Qt SQL模块概述
Qt SQL支持的数据库 要在项目中使用 Qt SQL 模块,需要在项目配置文件中添加下面一条设置语句: Qt sql在头文件或源文件中使用 Qt SQL 模块中的类,可以使用包含语句: #include <QtSql>这样会将某个 Qt SQL 模块中的所有类…...
PVE相关名词通俗表述方式———多处细节实验(方便理解)
PVE设置初期,对CIDR、 网关、 LinuxBridge、VLAN等很有困惑的朋友一定很需要一篇能够全面通俗易懂的方式去理解PVE 中Linux网桥的工作方式,就像操作一个英雄,多个技能,还是需要一点点去学习理解的,如果你上来就对着别人…...
C语言实现冒泡排序:从基础到优化全解析
一、什么是冒泡排序? 冒泡排序(Bubble Sort)是一种经典的排序算法,其工作原理非常直观:通过多次比较和交换相邻元素,将较大的元素“冒泡”到数组的末尾。经过多轮迭代,整个数组会变得有序。 二…...
ReentrantLock(可重入锁) Semaphore(信号量) CountDownLatch
目录 ReentrantLock(可重入锁) &Semaphore(信号量)&CountDownLatchReentrantLock(可重入锁)既然有了synchronized,为啥还要有ReentrantLock?Semaphore(信号量)如何确保线程安全呢?CountDownLatch ReentrantLock(可重入锁) &Semaphore(信号量…...
Zookeeper选举算法与提案处理概览
共识算法(Consensus Algorithm) 共识算法即在分布式系统中节点达成共识的算法,提高系统在分布式环境下的容错性。 依据系统对故障组件的容错能力可分为: 崩溃容错协议(Crash Fault Tolerant, CFT) : 无恶意行为,如进程崩溃,只要…...
Jmeter中的断言
7)断言 1--响应断言 功能特点 数据验证:验证响应数据是否包含或不包含特定的字符串、模式或值。多种匹配类型:支持多种匹配类型,如文本、正则表达式、文档等。灵活配置:可以设置多个断言条件,满足复杂的测…...
【通俗理解】隐变量的变分分布探索——从公式到应用
【通俗理解】隐变量的变分分布探索——从公式到应用 关键词提炼 #隐变量 #变分分布 #概率模型 #公式推导 #期望最大化 #机器学习 #变分贝叶斯 #隐马尔可夫模型 第一节:隐变量的变分分布的类比与核心概念【尽可能通俗】 隐变量的变分分布就像是一场“捉迷藏”游戏…...
Vivado程序固化到Flash
在上板调试FPGA时,通常使用JTAG接口下载程序到FPGA芯片中,FPGA本身是基于RAM工艺的器件,因此掉电后会丢失芯片内的程序,需要重新烧写程序。但是当程序需要投入使用时不能每一次都使用JTAG接口下载程序,一般FPGA的外围会…...
铲屎官进,2024年宠物空气净化器十大排行,看看哪款吸毛最佳?
不知道最近换毛季,铲屎官们还承受的住吗?我家猫咪每天都在表演“天女散花”,家里没有一块干净的地方,空气中也都是堆积的浮毛,幸好有宠物空气净化器这种清理好物。宠物空气净化器针对宠物浮毛设计,可以有效…...
SpringBoot 项目中使用 spring-boot-starter-amqp 依赖实现 RabbitMQ
文章目录 前言1、application.yml2、RabbitMqConfig3、MqMessage4、MqMessageItem5、DirectMode6、StateConsumer:消费者7、InfoConsumer:消费者 前言 本文是工作之余的随手记,记录在工作期间使用 RabbitMQ 的笔记。 1、application.yml 使…...
嵌入式硬件实战提升篇(二)PCB高速板设计 FPGA核心板带DDR3 PCB设计DDR全面解析
引言:设计一款高速板,供读者学习,FPGA核心板,带一颗DDR3内存,FPGA型号:XC6SLX16-2FTG256C。 随着嵌入式硬件技术的快速发展,高速板设计逐渐成为嵌入式系统设计中的核心技术之一。高速板的设计要…...
2044:【例5.12】回文字串
【题目描述】 输入一串字符,字符个数不超过100,且以“.”结束。 判断它们是否构成回文。 【输入】 一行字符串。 【输出】 是否为回文串。是输出“Yes”,否输出“No。” 【输入样例】 abccb 【输出样例】 No 代码实现 #include <stdio.h> /*2044&#x…...
Sui 链游戏开发实战:用 Move 写一个链上剪刀石头布游戏!
系列文章目录 Task1:hello move🚪 Task2:move coin🚪 Task3:move nft🚪 Task4:move game🚪 更多精彩内容,敬请期待!✌️ 文章目录 系列文章目录前言什么是 …...
Prometheus告警带图完美解决方案
需求背景 告警分析处理流程 通常我们收到 Prometheus 告警事件通知后,往往都需要登录 Alertmanager 页面查看当前激活的告警,如果需要分析告警历史数据信息,还需要登录 Prometheus 页面的在 Alerts 中查询告警 promQL 表达式,然…...
深度学习模型:循环神经网络(RNN)
一、引言 在深度学习的浩瀚海洋里,循环神经网络(RNN)宛如一颗独特的明珠,专门用于剖析序列数据,如文本、语音、时间序列等。无论是预测股票走势,还是理解自然语言,RNN 都发挥着举足轻重的作用。…...
分布式在线评测系统
OnlineJudge 前言所用技术开发环境 1. 需求分析2. 项目宏观结构3. compile_server服务设计3.1 compiler服务设计3.2 runner服务设计3.3 compile_run3.4 compile_server.cpp 4. oj_server服务设计4.1 model设计4.2 view设计4.3 control设计4.3.1 获取题目列表功能4.3.2 获取单个…...
Unity中动态生成贴图并保存成png图片实现
实现原理: 要生成长x宽y的贴图,就是生成x*y个像素填充到贴图中,如下图: 如果要改变局部颜色,就是从x1到x2(x1<x2),y1到y2(y1<y2)这个范围做处理, 或者要想做圆形就是计算距某个点(x1,y1&…...
鸿蒙多线程开发——sendable共享容器
1、异步锁机制 在介绍共享容器之前,先介绍异步锁机制。 为了解决多线程并发任务间的数据竞争问题,ArkTS引入了异步锁能力。异步锁可能会被类对象持有,因此为了更方便地在并发实例间获取同一个异步锁对象,AsyncLock对象支持跨线程…...