刷题日志【4】
目录
1、猜数字大小
1、猜数字大小
题意有点抽象,我大概讲一下,就是在1——n里面会有一个目标数,我们通过猜数字的方式逼近这个数字,直到解出这个数,之前我们是用二分法求最快达到求解的问题,这道题多了每次猜错都要付钱,不要求最快达到,只要求,不论题目的目标数是1——n里的哪一个,你口袋的钱在面对1——n的目标数时,都有解。
再简单点说,当n=5时,即总数字(1 2 3 4 5),不论目标数(x)是哪一个,你的钱都够逼出目标数,注意:这里不是指你的钱够面对目标数(x)的最差情况(如先猜:1 2 3······x,虽然这不一定是代价最高的,但估计不是最优的猜数字策略),而是钱够应对目标数为x的最佳情况(下面有举例解释)




1——10的最优策略如上,可以看到即使目标数是叶子节点(2,3 ,6 ,8 ,10),沿着各个支路进行代价累计发现最大的也只是(7->9->10)这一路,计算得到16(叶子节点是已经逼出来的答案,不算代价),所以一旦目标数不是叶子节点,那代价只会更小,所以以7为头节点的上图的策略是面对【1 ,10】的最佳策略
这里其实就有一个隐藏关系:对应的一个【】一定是有一个对应的的最优策略,即 【i j】的区间左右相同时,就会是一样的策略,对应的代价也是相同,这里就是我们可以记忆化的地方
1、无记忆化
class Solution {public:int getMoneyAmount(int n) {return dfs(1,n);}int dfs(int i,int j){//边界条件:头节点为1->【1,0】->无意义return 0【1 0】理论情况不可能出现,不用代价//头节点:2->【1 1】return 0-->直接猜到了,所以【1 1】不用耗费代价
if(i>=j){return 0;}
int ret=INT_MAX;
for(int head=i;head<=j;head++)
{
int x=dfs(i,head-1);
int y=dfs(head+1,j);
//取两者较大值,满足最大值即该策略全部数字都可以达到
int cost=max(x,y)+head;
//遍历每一种不同的头节点,每一个max都是对应的头节点可以实现全部数字的代价
//我们要的是全部可行代价里最小的
ret=min(ret,cost);
}return ret;}
};
2、记忆化
就比上面的多了memo【】【】对每一种下标的return进行记录
class Solution {int memo[201][201];public:int getMoneyAmount(int n) {return dfs(1,n);}int dfs(int i,int j){//边界条件:头节点为1->【1,0】->无意义return 0【1 0】理论情况不可能出现,不用代价//头节点:2->【1 1】return 0-->直接猜到了,所以【1 1】不用耗费代价
if(i>=j){return 0;}
if(memo[i][j]!=0){return memo[i][j];}
int ret=INT_MAX;
for(int head=i;head<=j;head++)
{
int x=dfs(i,head-1);
int y=dfs(head+1,j);
//取两者较大值,满足最大值即该策略全部数字都可以达到
int cost=max(x,y)+head;
//遍历每一种不同的头节点,每一个max都是对应的头节点可以实现全部数字的代价
//我们要的是全部可行代价里最小的
ret=min(ret,cost);
}
memo[i][j]=ret;//记录下来,方便其他的遍历到【i j】区间
return ret;}
};
2、矩阵中最长递增路径
发现相同的下标对应的最长路径一定是一样的:只要matrix【2】的最长路径已知,matrix【3】规划的路径里,只要有matrix【2】,那么matrix【3】经过matrix【2】的最长路径一定是matrix【2】+1(加上他本身)
所以在这里可以记忆化
class Solution {
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
//防止走回头录
bool check[201][201];
//备忘录
int memo[201][201];int m,n;public:int longestIncreasingPath(vector<vector<int>>& matrix) {m=matrix.size();n=matrix[0].size();int maxlength=0;for(int i=0;i<m;i++){for(int j=0;j<n;j++){check[i][j]=true;//dfs返回以【i ,j】为头节点的最长路径maxlength=max(maxlength,dfs(matrix,i,j)); check[i][j]=false;}}return maxlength;}int dfs(vector<vector<int>>& matrix,int i,int j) {//!=0即意味着这个位置之前记录过
if(memo[i][j]!=0)
{return memo[i][j];
}
int tmp=0;
for(int p=0;p<4;p++)
{
int x=i+dx[p];
int y=j+dy[p];if(x>=0&&x<m&&y>=0&&y<n&&!check[x][y]&&matrix[x][y]>matrix[i][j])
{check[x][y]=true;
tmp=max(tmp,dfs(matrix,x,y));
check[x][y]=false;}}
memo[i][j]=1+tmp;
return memo[i][j];}
};

相关文章:
刷题日志【4】
目录 1、猜数字大小 1、猜数字大小 题意有点抽象,我大概讲一下,就是在1——n里面会有一个目标数,我们通过猜数字的方式逼近这个数字,直到解出这个数,之前我们是用二分法求最快达到求解的问题,这道题多了每…...
如何制作自己的字体文件.ttf
日常编程中,一些常用的符号可以直接用来当做图标使用,不需要引入过多的资源文件(例如:ico、png、svg等)十分方便! 笔者发现iconfont网站可以选择自己需要的图标,制作成.ttf文件来直接使用&…...
gradle在IDEA 中无法使用的启动守护线程的问题
最近打开一个比较早的项目,Gradle 配置没有问题,IDEA 打开Java项目却不能初始化守护线程,UI 上只能看到失败,看不到具体原因。 首先尝试了升级最新的gradle 版本8.11, 实际上这个版本在本地命令行都不能正常工作,没有…...
Spring Boot 配置多数据源并手动配置事务
Spring Boot 配置多数据源并手动配置事务 一、为什么多数据源需要手动配置?二、配置多数据源1. 数据源配置类 (DataSourceConfig)2. 主数据库 MyBatis 配置类 (PrimaryDbMyBatisConfig)3. 从数据库 MyBatis 配置类 (SecondaryDbMyBatisConfig)4. application.yml 配…...
YashanDB 23.2 YAC 共享集群部署和使用自带YMP迁移工具进行数据迁移,效果很city
1. 环境准备 本文以经典架构(2 台服务器,1 共享存储且包含 3 个及以上 LUN)为例,搭建双实例单库的共享集群环境。 主机名 IP 版本 CPU 内存 硬盘 用途 yac1 192.168.50.60 Kylin-Server-V10-SP3 4C 8G 100G YAC 集群…...
【数学】矩阵的逆与伪逆 EEGLAB
文章目录 前言matlab代码作用EEGLAB 中的代码总结参考文献 前言 在 EEGLAB 的使用中,运行程序时出现了矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND 1.873732e-20 的 bug,调查 EEGLAB 后发现是 raw 数据的问题。 matlab代码 A_1 …...
狐猬编程 C++ L3 第7课 字符串入门 元音字母
给你一个所有字符都是字母的字符串, 请输出其中元音字母的个数。(提示: 二十六个字母中的五个元音字母是 a, e, i, o, u; 所有字符有大小写区别。) 输入格式 仅一行, 包…...
APP UI自动化测试的思路小结
在移动互联网飞速发展的今天,APP质量直接影响用户体验。为了保障UI功能的稳定性和一致性,APP UI自动化测试已经成为各大企业必不可少的一环。那么如何设计一套高效的测试方案?本篇为你总结关键思路! 如何从零构建UI自动化测试&am…...
2412d,d的7月会议
原文 总结 卡斯滕 Carsten说,Decard一直在大量试验WebAssembly.他们一直在把d运行时挖出来,直到它工作.他们在浏览器中运行了一些库函数,并试了不同虚机. 他们在移动方面遇见了很多问题,因为不同芯片按不同方式工作.他们想让他们的整个SDK在WASM上运行,但可能需要一年时间才…...
ANOMALY BERT 解读
出处: ICLR workshop 2023 代码:Jhryu30/AnomalyBERT 可视化效果: 一 提出动机 动机:无监督 TSAD 领域内,“训练集” 也缺失:真值标签(GT);换句话说,一个…...
定时/延时任务-Netty时间轮源码分析
文章目录 1. 概要2. 参数3. 构造器4. 回收5. 启动时间轮 - start6. 停止时间轮 - stop7. 添加任务8. 工作线程 - Worker8.1 线程参数8.2 核心逻辑-run8.3 指针跳动到下一个tick8.4 处理要取消的任务8.5 把新增的任务加入时间轮8.6 执行过期任务 9. HashedWheelTimeout9.1 属性9…...
React的一些主要优点是?
React 一些主要的优点: 组件化架构: React 通过组件化的方式构建 UI,允许开发者将复杂的应用拆分成可重用的小部分。这使得代码更加模块化和可维护。 虚拟 DOM: React 使用虚拟 DOM 来提高性能。它通过在内存中维护一个与应用状态…...
RabbitMQ 基本使用方法详解
RabbitMQ 基本使用方法 在你的代码中,涉及到了 RabbitMQ 的基本使用,包括队列定义、交换机的配置、消息的发送与接收等内容。下面我将详细总结 RabbitMQ 的基本使用方法,重点解释如何在 Spring Boot 项目中与 RabbitMQ 集成。 1. 引入依赖 …...
[leetcode100] 101. 对称二叉树
https://leetcode.cn/problems/symmetric-tree/description/?envTypestudy-plan-v2&envIdtop-100-liked 心血来潮,突然感觉很久没做leetcode,刷一题。 看到“简单”,哦吼,应该很快吧。 结果真是《简单》 题目描述 给你一个…...
Vue.createApp的对象参数
目录 template 属性 data 属性 methods 属性 疑问 function 函数的两种写法 methods 属性中 this 的指向 总结 Vue 实例是通过 Vue.createApp() 创建的,该函数需要接收一个对象作为参数,该对象可添加 template、data、methods 等属性。 template …...
短信验证码burp姿势
首先声明,本文仅仅作为学习使用,因个人原因导致的后果,皆有个人承担,本人没有任何责任。 在之前的burp学习中,我们学习了图片验证码的突破,但是现实中还有很多短信验证码,在此我介绍几种短信验…...
ubuntu WPS安装
需要进入国外官网下载 [OFFICIAL] WPS Office-Free Office Download for PC & Mobile, AI-Powered Office Suite 安装 sudo dpkg -i wps-office_11.1.0.11723.XA_amd64.deb 提示缺失字体操作 下载字体包 链接: https://pan.baidu.com/s/1EVzb3F8Ry_dJ_hj0A4MksQ 提取…...
中粮凤凰里共有产权看房记
中粮凤凰里看房是希望而来,失望而归。主要是对如下失望,下述仅个人看房感受: 1. 户型不喜欢:三房的厨房和餐厅位置很奇葩 2. 样板间在25楼:湖景一言难尽和有工厂噪声 3. 精装修的交房质量:阳台的推拉门用料很草率 …...
学习笔记068——Hibernate框架介绍以及使用方法
文章目录 一、如何使用二、具体操作1、创建 Maven 工程,pom.xml2、hibernate.cfg.xml3、创建实体类4、创建实体关系映射文件5、实体关系映射文件注册到 Hibernate 的配置文件中。6、使用 Hibernate API 完成数据操作。7、pom.xml 中需要配置 resource 三、Hibernate…...
Maven 安装配置(详细教程)
文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型(POM)的项目管理和自动化构建工具。它主要服务于 Java 平台,但也支持其他编程语言…...
2026年AI分身与具身智能报告:数字助理和物理机器人的产业爆发与投资机会
摘要:本报告系统分析了AI分身(数字物理)的技术应用、产业进展与商业价值,让行业从业者与投资者深入了解AI科技放大人类价值的核心逻辑。AI分身覆盖数字助理(OpenClaw、豆包等)、具身智能机器人、OPC创业等场…...
全球仅7家机构掌握的量子设备C语言底层协议栈:破解Quantinuum H2、Google Sycamore、华为昇腾Q100三大平台寄存器映射表(含未公开0x8F00~0x8FFF保留域详解)
第一章:C语言量子芯片控制接口开发导论量子计算硬件正从实验室走向工程化部署,而C语言因其确定性执行、零成本抽象与嵌入式兼容性,成为连接经典控制系统与低温量子芯片的关键桥梁。本章聚焦于构建稳定、低延迟、可验证的C语言接口层——它不模…...
ESP32 IDF 5.1.2 实战:从零构建BLE心率监测服务
1. 为什么选择ESP32构建BLE心率监测服务 如果你正在寻找一款性价比高、功耗低且支持蓝牙低功耗(BLE)的芯片来开发健康监测设备,ESP32绝对是首选。我自己做过好几个智能手环项目,实测下来ESP32的蓝牙性能非常稳定,搭配I…...
DVWA文件包含漏洞实战:从allow_url_include配置到GetShell全流程解析
DVWA文件包含漏洞实战:从环境配置到攻击防御全解析 漏洞原理与靶场环境搭建 文件包含漏洞是Web安全领域常见的高危漏洞之一,它允许攻击者通过动态文件包含机制读取敏感文件或执行任意代码。在PHP开发中,include、require等函数的不当使用是导…...
英伟达最强B200算力浪费60%!普林斯顿团队出手,利用率升至71%
闻乐 发自 凹非寺量子位 | 公众号 QbitAI所有用英伟达Blackwell B200的人,都在花冤枉钱??普林斯顿大学等联合团队指出,这款GPU居然因为软硬件适配问题白白浪费了60%的计算资源。算力浪费了,咋办呢——FlashAttention-4…...
Sa-Token多体系用户登录的坑与填坑指南:从Token有效期到Session超时的完整解决方案
Sa-Token多体系用户登录的坑与填坑指南:从Token有效期到Session超时的完整解决方案 在当今复杂的应用系统中,多体系用户登录已成为标配功能。无论是电商平台区分买家与卖家,还是内容管理系统区分作者与编辑,亦或是SaaS服务区分租户…...
2023最新版GEM5入门实战:从Docker编译到ARM全系统模拟(避坑指南)
2023最新版GEM5入门实战:从Docker编译到ARM全系统模拟(避坑指南) 1. 为什么选择GEM5进行体系结构研究 在计算机体系结构研究领域,GEM5已经成为事实上的标准模拟器。这个开源项目由多个顶尖学术机构共同维护,支持多种指…...
手把手配置GD32F407的CAN过滤器:从原理到实战(附常见配置误区)
深入解析GD32F407的CAN过滤器配置:从掩码模式到实战避坑指南 在工业控制与汽车电子领域,CAN总线因其高可靠性和实时性成为首选通信协议。作为GD32F407开发者,正确配置CAN过滤器往往是项目成功的关键一步,却也是最容易被忽视的技术…...
西门子1200与台达DT330温控器通讯实战:XMZ1200 - 4项目解析
西门子1200与台达DT330温控器通讯程序(XMZ1200-4)功能:实现西门子1200 PLC对台达DT330温控器进行485通讯控制,在触摸屏上设定温度,读取温度 器件:西门子1200 1214DC/DC/DC.昆仑通态TPC7022NI,西门子KTP700 Basic PN&am…...
智驾端到端模型Flow Matching与Diffusion选型及机器人场景差异解析
文章目录一、核心问题开篇:智驾端到端模型为何极少用Flow Matching?1.1 Flow Matching核心原理与智驾适配痛点(1)车载实时性与算力硬约束(核心痛点)(2)安全硬约束难以嵌入࿰…...
