leetcode day37 474
474 一和零
给你一个二进制字符串数组 strs 和两个整数 m 和 n 。
请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。
如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。
示例 1:
输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3
输出:4
解释:最多有 5 个 0 和 3 个 1 的最大子集是 {"10","0001","1","0"} ,因此答案是 4 。
其他满足题意但较小的子集包括 {"0001","1"} 和 {"10","1","0"} 。{"111001"} 不满足题意,因为它含 4 个 1 ,大于 n 的值 3 。
示例 2:
输入:strs = ["10", "0", "1"], m = 1, n = 1
输出:2
解释:最大的子集是 {"0", "1"} ,所以答案是 2 。
01背包问题
1、确定dp数组含义
dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
2、初始化为0
3、确定递推公式
因为物品的重量有了两个维度,所以用滚动数组解题,这里用二维数组。
注意:滚动数组双重for循环,必须先遍历物品,再遍历背包,同时背包要倒序遍历。
01背包递推公式dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
这里转化一下,01的个数相当于weight[i],value就是字符串本身的个数1
int max(int a,int b){return a>b?a:b;
}
int findMaxForm(char** strs, int strsSize, int m, int n) {int dp[m+1][n+1]={};//最多有i个0 j个1的最大子集大小int cnt0,cnt1=0,i,j,k;for(i=0;i<strsSize;i++){char *s=strs[i];int len=strlen(s);cnt0=0,cnt1=0;for(j=0;j<len;j++){if(s[j]=='0')cnt0++;else cnt1++;}for(j=m;j>=cnt0;j--){//先遍历物品,再遍历背包容量for(k=n;k>=cnt1;k--){//倒序遍历,避免被覆盖dp[j][k]=max(dp[j][k],dp[j-cnt0][k-cnt1]+1);}}}return dp[m][n];
}
完全背包
携带研究材料(第七期模拟笔试)
题目描述
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的重量,并且具有不同的价值。
小明的行李箱所能承担的总重量是有限的,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料可以选择无数次,并且可以重复选择。
输入描述
第一行包含两个整数,n,v,分别表示研究材料的种类和行李所能承担的总重量
接下来包含 n 行,每行两个整数 wi 和 vi,代表第 i 种研究材料的重量和价值
输出描述
输出一个整数,表示最大价值。
输入示例
4 5
1 2
2 4
3 4
4 5
输出示例
10
提示信息
第一种材料选择五次,可以达到最大值。
二维数组会越界,采用一维数组
完全背包与01背包不同点:物品可以重复取多次
1、二维数组情况
(1)dp[i][j]表示[0,i]物品重量为j可重复选的最大价值
(2)初始化
dp[0][j]=dp[0][j-w[0]]+v[0]
(3)递推公式
dp[i][j]=dp[i-1][j];//不放物品i
dp[i][j]=max(dp[i-1][j],dp[i][j-w[i]]+v[i]);
这里是dp[i][j-w[i]]+v[i],与01背包不同,dp[i-1][j-w[i]]+v[i]
2、一维数组
(1)dp[j]表示物品重量为j可重复选的最大价值
(2)初始化
dp[j]=dp[j-w[0]]+v[0]
与01背包不同,01背包初始化为01即可
(3)递推公式
dp[j]=max(dp[j],dp[j-w[i]+v[i])
这里与01背包相同
#include<stdio.h>
#define N 10005
#define ll long long
ll max(ll a,ll b){return a>b?a:b;
}
ll w[N]={},v[N]={};
ll dp[N]={};
int main(){int n,m,i,j;scanf("%d%d",&n,&m);for(i=0;i<n;i++){scanf("%lld%lld",&w[i],&v[i]);}//dp[i][j]表示[0,i]物品重量为j可重复选的最大价值for(j=w[0];j<=m;j++){if(j>=w[0])dp[j]=dp[j-w[0]]+v[0];}for(i=1;i<n;i++){for(j=m;j>=w[i];j--){dp[j]=max(dp[j],dp[j-w[i]]+v[i]);}}printf("%lld",dp[m]);return 0;
}
518 零钱兑换
给你一个整数数组 coins
表示不同面额的硬币,另给一个整数 amount
表示总金额。
请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0
。
假设每一种面额的硬币有无限个。
题目数据保证结果符合 32 位带符号整数。
示例 1:
输入:amount = 5, coins = [1, 2, 5] 输出:4 解释:有四种方式可以凑成总金额: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1
示例 2:
输入:amount = 3, coins = [2] 输出:0 解释:只用面额 2 的硬币不能凑成总金额 3 。
示例 3:
输入:amount = 10, coins = [10]
输出:1
因为题目数据保证结果符合 32 位带符号整数。所以要用INT_MAX防止数组越界
一维数组
1、dp[j]表示装满j钱的方法数
2、初始化dp[0]=1
3、确定动规方程
二维dp 递推公式: dp[i][j] = dp[i - 1][j] + dp[i][j - coins[i]]
压缩成一维:dp[j] += dp[j - coins[i]]
int change(int amount, int* coins, int coinsSize) {int dp[amount + 1];//dp[j]表示凑满j钱的方法memset(dp, 0, sizeof (dp));dp[0] = 1;for(int i = 0; i < coinsSize; i++){for(int j = coins[i]; j <= amount; j++){if (dp[j] < INT_MAX - dp[j - coins[i]])dp[j] += dp[j - coins[i]];//防止相加数据超过int}}return dp[amount];
}
相关文章:
leetcode day37 474
474 一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 示例 1: 输入:s…...
【计算机视觉】目标检测:深度解析YOLOv9:下一代实时目标检测架构的创新与实战
深度解析YOLOv9:下一代实时目标检测架构的创新与实战 架构演进与技术创新YOLOv9的设计哲学核心创新解析1. 可编程梯度信息(PGI)2. 广义高效层聚合网络(GELAN)3. 轻量级设计 环境配置与快速开始硬件需求建议详细安装步骤…...
Android Studio Profiler
1.我们想要查看自己方法的调用链,或者分析方法耗时的情况,可以选择Android Studio的Profiler,比较方便快捷。如下: 2.基本的面板参数讲解: 3.可以通过搜索,查看对应的方法,以及方法的调用链…...
Android Studio for Platform(ASFP)真机调试
连接设备 由于ubuntu连接adb设备每次都需要配置usb权限,很麻烦。并且每次换设备还要重新配置,我多数设备都是用wifi的adb方式连接。 开发板显示 连接显示器配合usb鼠标或者遥控器操作(因为开发板默认开启了adb,我这里是使用有线…...
如何个人HA服务器地址和长期密钥
下面分两步说明如何获取你的 Home Assistant 服务器地址以及创建“长期访问令牌”(Long-Lived Access Token),并给出一个简单的 Python 调用示例。 一、获取 Home Assistant 服务器地址 默认域名/端口 如果你在本机或局域网内安装并使用默认设…...
生物化学笔记:神经生物学概论04 视觉通路简介视网膜视网膜神经细胞大小神经节细胞(视错觉)
视觉通路简介 神经节细胞的胞体构成一明确的解剖层次,其外邻神经纤维层,内接内丛状层,该层在鼻侧厚约10~20μm,最厚在黄斑区约60~80μm。 全部细胞数约为120万个(1000000左右)。 每个细胞有一轴突ÿ…...
C++——调用OpenCV和NVIDIA Video Codec SDK库实现使用GPU硬解码MP4视频文件
系列文章目录 参考博客 参考博客 参考博客 文章目录 系列文章目录前言一、下载安装NVIDIA Video Codec SDK1、下载NVIDIA Video Codec SDK2、安装NVIDIA Video Codec SDK 二、下载编译安装OpenCV1、下载OpenCV2、编译安装OpenCV3、配置环境变量4、报错解决报错一: …...
dify升级最新版本(保留已创建内容)
dify安装参考文章: DeepSeek+Dify本地部署私有化知识库 如果之前安装的时候,是通过docker镜像的方式。 从网上下载最新的dify包,下载地址: https://github.com/langgenius/dify 下载完成后,把文件覆盖原…...
4、RabbitMQ的七种工作模式介绍
目录 一、Simple(简单模式) 1.1 概念 1.2 代码实现 消费者 运行结果 二、Work Queue(工作队列) 2.1 概念 1.2 代码实现 生产者 消费者 运行结果 三、Publish/Subscribe(发布/订阅模式) 3.1 概念 3.2 代码实现 生产者…...
React Three Fiber 详解:现代 Web3D 的利器
React Three Fiber 详解:现代 Web3D 的利器 随着 Web 技术的发展,3D 场景与交互已经不再是游戏开发者的专利。越来越多的网站、产品页、交互动画,开始大量引入 3D 元素。要在 React 项目中高效使用 WebGL,React Three Fiber(简称 R3F)成为了目前最主流的选择。 今天这篇…...
同步与互斥(同步)
线程同步 条件变量 当⼀个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了。 例如⼀个线程访问队列时,发现队列为空,它只能等待,只到其它线程将⼀个节点添加到队列中。这种情况就需要⽤到条…...
C语言教程(二十一):C 语言预处理器详解
一、预处理器概述 C语言预处理器是一个文本替换工具,它会对源代码进行扫描,处理以 # 开头的预处理指令。这些指令可以控制预处理器的行为,实现宏定义、文件包含、条件编译等功能。预处理器的主要作用是为后续的编译过程准备代码。 二、常见的…...
grafana/loki 设置日志保留时间
loki:limits_config:retention_period: 189h参考官网 Configuring the retention period...
Spring Boot × K8s 监控实战-集成 Prometheus 与 Grafana
在微服务架构中,应用的可观测性至关重要。Kubernetes 已成为容器化部署的标准,但其自身的监控能力有限,需要与其他工具集成才能实现详细的运行数据采集与分析。 本文将通过 Spring Boot Kubernetes Prometheus Grafana 实战,打…...
SpringBoot+Mybatis通过自定义注解实现字段加密存储
😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: SpringBootMybatis实现字段加密 ⏱️ 创作时间: 2025年04月…...
Vue3调度器错误解析,完美解决Unhandled error during execution of scheduler flush.
目录 Vue3调度器错误解析,完美解决Unhandled error during execution of scheduler flush. 一、问题现象与本质 二、七大高频错误场景与解决方案 1、Setup初始化陷阱 2、模板中的"幽灵属性" 3、异步操作的"定时炸弹" 4、组件嵌套黑洞 5…...
第35周Zookkeeper+Dubbo Zookkeeper
第35周ZooKeeperDubbo ZooKeeper 一、周介绍 本周主要内容包括ZooKeeper、Dubbo以及面试三部分。 1.1 ZooKeeper 节点介绍 ZooKeeper的数据结构核心是每个node节点。节点具有属性、特点和功能,其数据结构为树形结构,类似于多叉树,分隔符是…...
基于tabula对pdf中多个excel进行识别并转换成word中的优化(四)
对上一节进行优化: 1、识别多个excel 2、将表格中的nan替换成空字符串 一、示例中的pdf内容 二、完整代码参考: import tabula import numpy as np from docx import Document from docx.oxml.ns import qn from docx.oxml import OxmlElementdef get_t…...
Electron-vite中ELECTRON_RENDERER_URL环境变量如何被设置的
近期我专注于前端技术栈 Electron 与 Vue3 的学习实践,依照教程网站 快速开始 | electron-vite 的快速入门指引,搭建了一个示例项目。成功完成项目下载,并通过 npm run dev 命令启动项目后,在研读项目 main 目录下的 index.ts 文件…...
Electron Forge【实战】桌面应用 —— 将项目配置保存到本地
最终效果 定义默认配置 src/initData.ts export const DEFAULT_CONFIG: AppConfig {language: "zh",fontSize: 14,providerConfigs: {}, };src/types.ts export interface AppConfig {language: zh | enfontSize: numberproviderConfigs: Record<string, Recor…...
gem5-gpu 安装过程碰到的问题记录 关于使用 Ruby + Garnet
如何使用Garnet? 这并不像一组命令行参数那么简单。要使用gem5-gpu+garnet,您可能需要修改python配置脚本。 问题是配置文件gem5-gpu/configs/gpu_protocol/VI_hammer_fusion.py指定了链接的intBW和extBW。 看来Garnet不支持这一点。然而,似乎所有的链路都是相同的带宽,所…...
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
一、基本介绍 MobileIMSDK是一套全平台原创开源IM通信层框架: 超轻量级、高度提炼,lib包50KB以内;精心封装,一套API同时支持UDP、TCP、WebSocket三种协议(可能是全网唯一开源的);客户端支持iOS…...
《阿里Qwen3开源:AI新纪元的破晓之光》
《阿里Qwen3开源:AI新纪元的破晓之光》 惊爆!阿里释放 Qwen3 “大杀器” 在人工智能的星辰大海中,每一次新模型的诞生都如同点亮一颗新星,而阿里巴巴此次发布并开源 Qwen3,无疑是投下了一枚震撼弹,瞬间吸引了全球 AI 领域的目光。这不仅是阿里在 AI 征程上的一座重要里程…...
前端防护利器:disable-devtool 使用指南 - 保护你的Web应用安全
文章目录 前端防护利器:disable-devtool 使用指南 - 保护你的Web应用安全为什么需要禁用开发者工具?什么是 disable-devtool?安装与引入通过npm/yarn安装通过CDN引入ES6模块引入配置选项详解完整使用示例检测模式说明最佳实践在线考试系统防护敏感数据保护注意事项更多资源前…...
万物皆可执行:多功能机器人正在定义新生产力法则
引言 当波士顿动力的Atlas完成高难度体操动作,当特斯拉Optimus在工厂精准分拣零件,当小鹏Iron机器人以拟态双手递上咖啡——这些场景不再只是科幻电影的桥段,而是多功能机器人(Polyfunctional Robots)带来的真实变革…...
从车道检测项目入门open cv
从车道检测项目入门open cv 前提声明:非常感谢b站up主 嘉然今天吃带变,感谢其视频的帮助。同时希望各位大佬积积极提出宝贵的意见。😊😊😊(❁◡❁)(●’◡’●)╰(▽)╯ github地址:https://github.com/liz…...
Vue3取消网络请求的方法(AbortController)
在 Vue3 中,已经发出的请求是否可以被取消,取决于你使用的 HTTP 客户端库。Vue3 本身不直接处理 HTTP 请求,但通常搭配 Axios 或原生 fetch 使用。以下是两种主流方案的取消方法: 1. 使用 Axios CancelToken Axios 提供了 Cance…...
深度解析Qwen3:性能实测对标Gemini 2.5 Pro?开源大模型新标杆的部署挑战与机遇
大语言模型(LLM)的浪潮持续席卷技术圈,性能天花板不断被刷新。以 Gemini 2.5 Pro 为代表的闭源模型展现了惊人的能力,但其高昂的成本和有限的可访问性也让许多开发者望而却步。与此同时,开源力量正以前所未有的速度崛起…...
AI遇见端动态神经网络:Cephalon(联邦学习+多模态编码)认知框架构建
前引: 在数字化浪潮席卷全球的今天,数据爆炸与算力需求的指数级增长正推动着云计算向更智能、更高效的方向演进。面对海量终端设备的实时响应需求、复杂AI模型的分布式训练挑战,以及多场景数据的协同处理难题,传统云架构逐渐显露出…...
机器学习之五:基于解释的学习
正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...
高翔视觉slam中常见的OpenCV和Eigen的几种数据类型的内存布局及分配方式详解
vector<Eigen::Vector2d, Eigen::aligned_allocator<Eigen::Vector2d>> 内存布局及分配方式详解 1. 内存对齐的必要性 Eigen 的固定大小类型(如 Eigen::Vector2d、Eigen::Matrix4d 等)需要 16 字节内存对齐,以支持 SIMD 指令(如 SSE/AVX)的并行计算。若未对…...
电子电器架构 --- 人工智能、固态电池和先进自动驾驶功能等新兴技术的影响
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...
【C++11】类的新功能
前言 上文我们学习了包装器:function和bind。function可以包装一切可调用对象,并用统一的调用方式调用不同的可调用对象。bind则可以控制函数参数个数【C11】包装器:function与bind-CSDN博客 本文我们来学习C11的类中新增的一些功能 默认的移…...
1.6 点云数据获取方式——单目相机多视图几何
图1-6-1多视图几何重建 单目相机的多视图几何研究具有重要的理论与实际意义。在理...
马井堂-区块链技术:架构创新、产业变革与治理挑战(马井堂)
区块链技术:架构创新、产业变革与治理挑战 摘要 区块链技术作为分布式账本技术的革命性突破,正在重构数字时代的信任机制。本文系统梳理区块链技术的核心技术架构,分析其在金融、供应链、政务等领域的实践应用,探讨共识算法优化、…...
MicroBlaze软核的开发使用
一、MicroBlaze 介绍 MicroBlaze 是由 Xilinx 开发的一种可配置的 32 位 RISC 软处理器内核。它作为 FPGA 设计中的 IP 核,通过 Vivado 工具进行配置和集成。MicroBlaze 提供了高度的灵活性,允许开发人员根据应用需求调整处理器的功能、性能和资源占用。…...
是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表
以下是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表。 一、全流程技术栈概览 阶段核心任务关键技术/工具数据采集获取原始数据…...
【爬虫】案例-获取cbh电影
以cupfox.in为例子: 观察ts文件和m3u8文件,可以知道一个完整的视频是由多个ts文件组合,而m3u8则是记录所有ts文件信息的文本 思路 1.先爬一个ts,测试能否观看 2.爬m3u8文件,通过正则分析出变化的部分 3.完整的把每个…...
分治而不割裂—分治协同式敏捷工作模式
分治而不割裂:解密敏捷协同工作模式如何驱动大企业持续领跑 在数字化浪潮中,亚马逊仅用11天完成Prime Day全球技术架构升级,华为5G基站项目组创造过单周迭代47个功能模块的纪录,这些商业奇迹的背后,都隐藏着一个共性秘…...
【MySQL】聚合查询 和 分组查询
个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 目录 🌴 一、聚合查询 🌲1.概念 🌲2.聚合查询函数 COUNT() SUM() AVG(&…...
Weka通过10天的内存指标数据计算内存指标动态阈值
在数据处理和监控系统中,动态阈值的计算是一种常见的方法,用以根据数据的实际分布和变化来调整阈值,从而更有效地监控和预警。在Weka中,虽然它主要是用于机器学习和数据挖掘的工具,但你可以通过一些间接的方法来实现…...
iOS签名的包支持推送功能吗?
推送失败的可能原因: 1. 生产包没有上报token ,所以无法推送成功,需要检查是否在企业包签名后导致无法完成apns的注册,无法从Apple取到token 2. 问题可能出在证书上,因为iOS推送有一个开发证书和一个生产证书ÿ…...
JavaWeb:后端web基础(TomcatServletHTTP)
一、今日内容 二、Tomcat 介绍与使用 介绍 基本使用 小结 配置 配置 查找进程 三、Servlet 什么是Servlet 快速入门 需求 步骤 1.新建工程-模块(Maven) 2.修改打包方式-war 3.编写代码 /*** 可以选择继承HttpServlet*/ WebServlet("/hello&q…...
关于浏览器对于HTML实体编码,urlencode,Unicode解析
目录 HTML实体编码 URL编码 Unicode编码 解析层次逻辑 为什么<script></script>不可以编码符号 为什么不能编码JavaScript:协议 为什么RCDATA标签中的都会被解析成文本 为什么HTML编码了<>无法执行 HTML实体编码 通过特殊语法(<、>…...
C++智能指针滥用带来的性能与内存问题有哪些
在现代C编程中,智能指针(Smart Pointers)已经成为开发者工具箱中不可或缺的一部分。它们作为一种对传统裸指针(Raw Pointers)的替代方案,旨在解决长期困扰C开发者的内存管理难题。C作为一门高性能的系统编程…...
C++算法(17):reverse函数用法详解,头文件<algorithm>与实战示例
在C中,std::reverse 函数用于反转容器或数组中元素的顺序,需包含头文件 <algorithm>。以下是其用法详解: 基本用法 函数原型: template <class BidirIt> void reverse(BidirIt first, BidirIt last); 参数…...
【滑动窗口】最大连续1的个数|将x减到0的最小操作数
文章目录 1.最大连续1的个数2.将x减到0的最小操作数 1.最大连续1的个数 解法: 1.暴力解法给定一个left指针固定左端点元素,再给定一个right指针从左端点元素开始遍历。 当遇到1时,让一个计数器cnt1,当遇到0时,让统计0…...
MySQL 在 CentOS 7 环境下的安装教程
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
嵌入式复习第一章
1. 嵌入式系统概念、应用与特点 2. 嵌入式系统的硬件( CPU 、外设) 3. 主要嵌入式软件系统(应用及 OS ) 4. 嵌入式系统的发展趋势 嵌入式系统定义 “以 应用为中心 ,以计算机技术为基础,并且软硬件…...
【C#】.net core6.0无法访问到控制器方法,直接404。由于自己的不仔细,出现个低级错误,这让DeepSeek看出来了,是什么错误呢,来瞧瞧
🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…...