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

[特殊字符] 第88课:目标和

想系统提升编程能力、查看更完整的学习路线欢迎访问 AI Compasshttps://github.com/tingaicompass/AI-Compass仓库持续更新刷题题解、Python 基础和 AI 实战内容适合想高效进阶的你。 第88课:目标和模块:动态规划 |难度:Medium ⭐⭐LeetCode 链接:https://leetcode.cn/problems/target-sum/前置知识:第75课(零钱兑换)、第79课(分割等和子集)、第59课(全排列-回溯基础)预计学习时间:30分钟 题目描述给你一个非负整数数组 nums 和一个整数 target。向数组中的每个整数前添加 ‘’ 或 ‘-’ 符号,然后串联起所有整数,可以构造一个表达式。返回可以通过上述方法构造的、运算结果等于 target 的不同表达式的数目。示例:输入: nums [1,1,1,1,1], target 3 输出: 5 解释: 一共有5种方法让最终目标和为3。 -1 1 1 1 1 3 1 - 1 1 1 1 3 1 1 - 1 1 1 3 1 1 1 - 1 1 3 1 1 1 1 - 1 3约束条件:1 ≤ nums.length ≤ 200 ≤ nums[i] ≤ 10000 ≤ sum(nums[i]) ≤ 1000-1000 ≤ target ≤ 1000 边界用例(面试必考)用例类型输入期望输出考察点最小输入nums[1], target11单个元素,11无解情况nums[1], target20无法构造含零nums[0,0,1], target140可以是0或-0,组合数翻倍负目标nums[1,2], target-31-1-2-3大规模n20, nums全是1000—性能边界 思路引导生活化比喻想象你有5个骰子,每个骰子都是1点。现在你要通过给每个骰子标记“或”-,让它们的和等于3。笨办法:尝试所有可能的标记方案。5个骰子,每个有2种选择(或-),总共2^532种组合。一个个试,数一数有多少种和为3。聪明办法:换个角度思考!假设标记为“的骰子和为 P,标记为”-的骰子和为 N那么 P - N target,且 P N sum(所有骰子)推导出 P (target sum) / 2问题转化:从5个骰子中选出一些,使它们的和恰好等于 P。这就变成了经典的0-1背包问题!我们只需要计算有多少种方法凑出和为P,而不是枚举所有2^n种组合。关键洞察核心突破口:问题可以转化为0-1背包的方案数问题 — 从数组中选出一些数,使其和等于 (targetsum)/2。 解题思维链这一节模拟你在面试中从零开始思考的过程。Step 1:理解题目 → 锁定输入输出输入:非负整数数组 nums,整数 target输出:有多少种添加/-符号的方法,使得表达式结果等于 target限制:数组长度最大20,每个元素最大1000每个数字前必须添加或-符号Step 2:先想笨办法(回溯法)用回溯枚举所有可能的/-组合:对每个数字,选择添加或-,然后递归处理下一个数字,最后统计和为target的方案数。时间复杂度:O(2^n) — 每个数字2种选择,n20时是100万种组合瓶颈在哪:大量重复计算,比如前3个数和为5这个状态可能被重复访问多次Step 3:瓶颈分析 → 优化方向回溯法中,同样的前k个数的和被反复计算。比如:路径1:12-3 → 和0路径2:-1-23 → 和0这两条路径到达了相同的状态(前3个数和为0),但后续的计算是独立进行的,造成浪费数学转化:设正数和为P,负数和为N(绝对值)则 P - N target,且 P N sum推导:P (target sum) / 2核心问题:从数组中选出一些数,使其和等于P,有多少种选法?优化思路:这是0-1背包的方案数问题,用DP解决!Step 4:选择武器选用:0-1背包DP(方案数变体)理由:问题转化为子集和等于目标值的方案数每个数字选或不选,符合0-1背包特征DP可以避免重复计算,从O(2^n)降到O(n×sum)模式识别提示:当题目出现每个元素选或不选“统计方案数时,优先考虑0-1背包DP” 解法一:回溯法(直觉解法)思路用回溯枚举所有2^n种/-组合,统计和为target的方案数。虽然慢,但逻辑直接,适合理解题意。图解过程示例: nums [1, 1, 1], target 1 决策树(深度优先搜索): [] / \ 1(sum1) -1(sum-1) / \ / \ 1(2) -1(0) 1(0) -1(-2) / \ / \ / \ / \ 1 -1 1 -1 1 -1 1 -1 (3) (1)✓ (1)✓(-1) (1)✓(-1) (1)✓(-3) 找到4条路径和为1: 1. 1 1 -1 1 2. 1 -1 1 1 3. -1 1 1 1 4. 1 1 -1 1(重复计数,实际是3种)Python代码fromtypingimportListdeffindTargetSumWays_backtrack(nums:List[int],target:int)-int: 解法一:回溯法 思路:枚举所有/-组合,统计和为target的方案数 defbacktrack(index:int,current_sum:int)-int:# 递归终止:处理完所有数字ifindexlen(nums):return1ifcurrent_sumtargetelse0# 选择1:添加号count_plusbacktrack(index1,current_sumnums[index])# 选择2:添加-号count_minusbacktrack(index1,current_sum-nums[index])returncount_pluscount_minusreturnbacktrack(0,0)# ✅ 测试print(findTargetSumWays_backtrack([1,1,1,1,1],3))# 期望输出:5print(findTargetSumWays_backtrack([1],1))# 期望输出:1print(findTargetSumWays_backtrack([1],2))# 期望输出:0复杂度分析时间复杂度(2^n) — 每个数字2种选择,n20时约100万次递归具体地说:如果 n20,大约需要 2^20 ≈ 1,048,576 次递归调用空间复杂度(n) — 递归调用栈深度优缺点✅ 逻辑直接,易于理解✅ 代码简洁,面试中可以快速写出❌ 时间复杂度高,n≥15时会超时❌ 大量重复计算相同的子问题⚡ 解法二:回溯记忆化(优化)优化思路在回溯基础上,用哈希表记录已计算过的状态(index, current_sum),避免重复计算。关键想法:相同的(位置,当前和)状态只需要计算一次,结果可以复用Python代码deffindTargetSumWays_memo(nums:List[int],target:int)-int: 解法二:回溯记忆化 思路:用字典缓存(index, sum)的计算结果 memo{}# 记忆化字典: (index, current_sum) - 方案数defbacktrack(index:int,current_sum:int)-int:# 递归终止ifindexlen(nums):return1ifcurrent_sumtargetelse0# 查缓存if(index,current_sum)inmemo:returnmemo[(index,current_sum)]# 递归计算count(backtrack(index1,current_sumnums[index])backtrack(index1,current_sum-nums[index]))# 存缓存memo[(index,current_sum)]countreturncountreturnbacktrack(0,0)# ✅ 测试print(findTargetSumWays_memo([1,1,1,1,1],3))# 期望输出:5复杂度分析时间复杂度(n × sum) — 最多有 n×sum 种不同的(index,sum)状态空间复杂度(n × sum) — 记忆化字典和递归栈 解法三:动态规划 — 0-1背包(最优解)优化思路通过数学推导,将问题转化为0-1背包:设正数和为 P,负数和为 N(绝对值)P - N targetP N sum推导出P (target sum) / 2问题转化:从数组中选出一些数,使其和等于P,有多少种选法?这是经典的0-1背包方案数问题,可以用DP数组高效求解。关键想法:数学转化将O(2^n)的枚举问题降为O(n×P)的DP问题图解过程示例: nums [1, 1, 1, 1, 1], target 3 Step 1: 计算目标和 P sum 5, target 3 P (3 5) / 2 4 Step 2: 问题转化 从[1,1,1,1,1]中选数,和为4,有多少种选法? Step 3: DP定义 dp[j] 和为j的方案数 初始化: dp [1, 0, 0, 0, 0] (和为0有1种方法:什么都不选) 处理第1个数(1): dp[4] dp[4] dp[3] 0 0 0 dp[3] dp[3] dp[2] 0 0 0 dp[2] dp[2] dp[1] 0 0 0 dp[1] dp[1] dp[0] 0 1 1 结果: dp [1, 1, 0, 0, 0] 处理第2个数(1): dp[4] dp[4] dp[3] 0 0 0 dp[3] dp[3] dp[2] 0 0 0 dp[2] dp[2] dp[1] 0 1 1 dp[1] dp[1] dp[0] 1 1 2 结果: dp [1, 2, 1, 0, 0] 处理第3个数(1): dp [1, 3, 3, 1, 0] 处理第4个数(1): dp [1, 4, 6, 4, 1] 处理第5个数(1): dp [1, 5, 10, 10, 5] 答案: dp[4] 5Python代码deffindTargetSumWays(nums:List[int],target:int)-int: 解法三:动态规划 — 0-1背包(最优解) 思路:转化为子集和为P的方案数问题 total_sumsum(nums)# 剪枝1:如果target的绝对值大于sum,无解ifabs(target)total_sum:return0# 剪枝2:如果(targetsum)是奇数,无解(P必须是整数)if(targettotal_sum)%21:return0# 计算目标正数和P(targettotal_sum)//2# DP定义: dp[j] 和为j的方案数dp[0]*(P1)dp[0]1# 和为0的方案数是1(什么都不选)# 0-1背包:每个数字选或不选fornuminnums:# 倒序遍历,避免重复使用同一个数字forjinrange(P,num-1,-1):dp[j]dp[j-num]returndp[P]# ✅ 测试print(findTargetSumWays([1,1,1,1,1],3))# 期望输出:5print(findTargetSumWays([1],1))# 期望输出:1print(findTargetSumWays([1,0],1))# 期望输出:2 (注意0的处理)print(findTargetSumWays([100],-200))# 期望输出:0复杂度分析时间复杂度(n × P) — n是数组长度,P是目标和,最大值是sum/2具体地说:如果 n20,sum1000,P500,大约需要 20×50010,000 次操作空间复杂度§ — DP数组长度为什么是最优解✅时间从O(2^n)降到O(n×P):n20,sum1000时,从100万降到1万,提升100倍✅空间O§非常节省:只需要一维DP数组,比记忆化更优✅数学转化巧妙:将复杂的符号问题转化为简单的子集和问题✅代码简洁:核心逻辑只有10行,易于理解和实现 Pythonic 写法利用 Python 的 sum() 和简洁语法:deffindTargetSumWays_pythonic(nums:List[int],target:int)-int:Pythonic 写法:一行计算P,简化剪枝totalsum(nums)ifabs(target)totalor(targettotal)%2:return0P(targettotal)//2dp[1][0]*Pfornuminnums:dp[dp[j](dp[j-num]ifjnumelse0)forjinrange(P1)]returndp[P]# ✅ 测试print(findTargetSumWays_pythonic([1,1,1,1,1],3))# 期望输出:5这个写法利用了:列表推导式:一行更新DP数组,代码更简洁三元表达式:避免索引越界检查⚠️面试建议:Pythonic写法虽然简洁,但可读性略差。面试中建议先写清晰版本,展示思路后再提这个优化。 解法对比维度解法一:回溯解法二:记忆化 解法三:DP背包(最优)时间复杂度O(2^n)O(n×sum)O(n×P)← P≤sum/2空间复杂度O(n)O(n×sum)O§← 空间最优代码难度简单中等中等面试推荐⭐⭐⭐⭐⭐⭐← 首选适用场景n≤15n≤20,sum小通用,性能最佳为什么是最优解:时间复杂度从指数级O(2^n)降到多项式级O(n×P),提升巨大空间复杂度O§远小于记忆化的O(n×sum)数学转化将问题简化,代码更简洁易懂面试建议:先口述回溯思路,说明暴力法是O(2^n)立即提出数学转化:P(targetsum)/2,将问题转化为0-1背包写出最优解(DP背包),展示对背包问题的深刻理解强调为什么是最优:时间空间都大幅优化,且逻辑优雅 面试现场模拟面试中的完整对话流程,帮你练习边想边说。面试官:请你解决一下这道目标和问题。你:(审题30秒)好的,这道题要求给每个数字添加或-符号,使表达式结果等于target,返回方案数。我的第一个想法是用回溯枚举所有2^n种符号组合,但时间复杂度太高。不过我注意到一个数学技巧:设正数和为P,负数和为N,则 P-Ntarget,PNsum,推导出 P(targetsum)/2。问题就转化为:**从数组中选数,和为P,有多少种选法?**这是0-1背包的方案数问题,可以用DP解决,时间O(n×P)。面试官:很好,请写一下代码。你:(边写边说)首先处理边界情况:如果 |target| sum,无解如果 (targetsum) 是奇数,P不是整数,无解然后定义 dp[j] 表示和为j的方案数,初始化 dp[0]1。用0-1背包的模板,倒序遍历避免重复使用同一个数,状态转移方程是dp[j] dp[j-num]。最后返回 dp[P]。面试官:测试一下?你:用示例 [1,1,1,1,1], target3 走一遍…sum5, P(35)/24。初始化 dp[1,0,0,0,0]。处理第1个1: dp[1,1,0,0,0]处理第2个1: dp[1,2,1,0,0]…最终 dp[4]5,结果正确!再测边界情况 [1], target2,因为 |2|1,返回0,也正确。高频追问追问应答策略“为什么P(targetsum)/2?”设正数和P,负数和N(绝对值),则 P-Ntarget,PNsum。两式相加得 2Ptargetsum,所以 P(targetsum)/2“为什么倒序遍历?”0-1背包要求每个数只用一次。正序遍历会导致 dp[j] 被更新后,dp[jnum] 又用了新的 dp[j],相当于重复使用。倒序保证用的是上一轮的旧值“如果数组中有0怎么办?”0可以是0或-0,对和没影响,但会让方案数翻倍。DP会自动处理:dp[j] dp[j-0] dp[j],相当于方案数乘2“能不能用滚动数组优化?”已经是一维DP数组了,空间O§已是最优,无需再优化 知识点总结Python技巧卡片 # 技巧1:边界检查 — 提前剪枝,避免无效计算ifabs(target)totalor(targettotal)%2:return0# 技巧2:整数除法 — 使用 // 避免浮点数P(targettotal_sum)//2# 技巧3:倒序遍历 — 0-1背包核心技巧forjinrange(P,num-1,-1):dp[j]dp[j-num] 底层原理(选读)为什么倒序遍历是0-1背包的核心?考虑正序遍历for j in range(num, P1):更新 dp[2] 时,用的是新的 dp1这相当于同一个数字被使用了多次,变成了完全背包而倒序遍历for j in range(P, num-1, -1):更新 dp[2] 时,用的是旧的 dp1保证每个数字只使用一次,符合0-1背包定义记忆口诀:0-1背包倒序,完全背包正序!算法模式卡片 模式名称:0-1背包DP(方案数变体)适用条件:从数组中选出一些元素(每个选或不选)使得某个属性(和/积/异或等)等于目标值求满足条件的选法数量识别关键词:“选或不选”、“方案数”、“子集和”、“目标值”模板代码:# 0-1背包方案数模板defcount_ways(nums:list[int],target:int)-int:dp[0]*(target1)dp[0]1# 和为0的方案数是1fornuminnums:forjinrange(target,num-1,-1):# 倒序!dp[j]dp[j-num]returndp[target]易错点 ⚠️忘记处理(targetsum)为奇数的情况:如果P不是整数,题目无解,需要提前返回0。正确做法:检查(target total_sum) % 2 1时返回0正序遍历DP数组:会导致同一个数字被重复使用,变成完全背包,答案错误。正确做法:0-1背包必须倒序遍历,for j in range(P, num-1, -1)忘记处理target为负数的情况:数学推导依然成立,因为绝对值不影响 P(targetsum)/2。正确做法:检查abs(target) total_sum时返回0️ 工程实战(选读)这个算法思想在真实项目中的应用,让你知道学了有什么用。场景1:数据分析中的平衡分组:给定一组数据,如何分成两组使得两组的某个统计量(均值/方差)之差等于目标值?用0-1背包DP可以快速计算所有可行的分组方案。场景2:负载均衡问题:有n个任务,每个任务有权重。要将任务分配到两台服务器,使得两台服务器的负载差等于某个值,有多少种分配方案?这就是本题的变体。场景3:游戏设计中的装备搭配:RPG游戏中,玩家有n件装备,每件装备有属性加成(正数)或减益(负数)。要让最终属性值等于目标值,有多少种装备搭配方案?用本题的方法可以快速计算。️ 举一反三完成本课后,试试这些同类题目来巩固知识:题目难度相关知识点提示LeetCode 416. 分割等和子集Medium0-1背包(存在性)Psum/2,求是否存在和为P的子集LeetCode 1049. 最后一块石头的重量IIMedium0-1背包(最小化)转化为将石头分成两堆,最小化差值LeetCode 474. 一和零Medium二维0-1背包两个维度(0的个数和1的个数)的背包LeetCode 698. 划分为k个相等的子集Medium回溯剪枝无法转化为DP,需要用回溯枚举LeetCode 1982. 从子集的和还原数组Hard逆向思维给定所有子集和,还原原数组 课后小测试试这道变体题,不要看答案,自己先想5分钟!题目:如果题目改为每个数字可以使用任意次(可以重复选),应该如何修改代码? 提示(实在想不出来再点开)这变成了完全背包问题!核心修改:将倒序遍历改为正序遍历,允许重复使用同一个数字。✅ 参考答案deffindTargetSumWays_unbounded(nums:List[int],target:int)-int:变体:完全背包(每个数字可以重复使用)total_sumsum(nums)ifabs(target)total_sumor(targettotal_sum)%2:return0P(targettotal_sum)//2dp[0]*(P1)dp[0]1fornuminnums:# 正序遍历 — 完全背包允许重复使用forjinrange(num,P1):dp[j]dp[j-num]returndp[P]# 测试print(findTargetSumWays_unbounded([1,2],3))# 结果会不同,因为可以重复使用: 1113, 123, 213 等核心区别:0-1背包(每个数只用一次):倒序遍历for j in range(P, num-1, -1)完全背包(每个数可重复用):正序遍历for j in range(num, P1)记住这个规律,就能轻松应对所有背包变体!如果这篇内容对你有帮助推荐收藏 AI Compasshttps://github.com/tingaicompass/AI-Compass更多系统化题解、编程基础和 AI 学习资料都在这里后续复习和拓展会更省时间。

相关文章:

[特殊字符] 第88课:目标和

想系统提升编程能力、查看更完整的学习路线,欢迎访问 AI Compass:https://github.com/tingaicompass/AI-Compass 仓库持续更新刷题题解、Python 基础和 AI 实战内容,适合想高效进阶的你。 📖 第88课:目标和 模块:动态规划 | 难度:…...

[特殊字符] 第87课:股票含冷冻期

想系统提升编程能力、查看更完整的学习路线,欢迎访问 AI Compass:https://github.com/tingaicompass/AI-Compass 仓库持续更新刷题题解、Python 基础和 AI 实战内容,适合想高效进阶的你。📖 第87课:股票含冷冻期模块:动态规划 | 难…...

从付费软件到自主开发:我用AI和FFmpeg实现了一个录屏工具淌

我为什么会发出这个疑问呢?是因为我研究Web开发中的一个问题时,HTTP请求体在 Filter(过滤器)处被读取了之后,在 Controller(控制层)就读不到值了,使用 RequestBody 的时候。 无论是字…...

HJ169 灵异背包?

题目题解(36)讨论(22)排行 简单 通过率:43.17% 时间限制:1秒 空间限制:256M 知识点贪心 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。 描述 给定 nn 个正…...

Piggy_Packages V2026.1 帮助文档(七)WRFDA同化试验

数值天气预报的主要误差来源于初始场的误差。资料同化(Data Assimilation)是一种将观测资料与数值天气预报(NWP)产品及其各自的误差统计数据相结合的技术,旨在为数值模式提供更加准确的初始场。 在“Piggy_Packages V…...

Serverless 架构设计与实践:构建高效的无服务器应用

Serverless 架构设计与实践:构建高效的无服务器应用 前言 作为一个在数据深渊里捞了十几年 Bug 的女码农,我深知 Serverless 架构在现代云原生应用中的重要性。随着云计算的发展,Serverless 架构以其按需付费、自动扩缩容等特性&#xff0c…...

OpenClaw+千问3.5-9B智能家居:自然语言控制家庭设备

OpenClaw千问3.5-9B智能家居:自然语言控制家庭设备 1. 为什么需要自然语言控制智能家居? 去年装修新房时,我装了整整27个智能设备——从客厅的吸顶灯到厨房的窗帘电机,甚至马桶盖都接入了米家系统。但很快发现一个问题&#xff…...

知识竞赛软件如何选择?抢答器功能

知识竞赛软件怎么选?抢答器功能是关键 组织一场精彩、公平、高效的知识竞赛,离不开专业软件的支持。在众多功能中,抢答器功能往往是决定竞赛成败的核心。本文将系统性地探讨如何选择一款合适的知识竞赛软件,并深入分析抢答器功能…...

Qwen3.5-千问 ZGC在Linux和Windows实现有何区别?

ZGC 在 Linux 和 Windows 上的核心算法(如着色指针、读屏障、并发标记/重定位)是完全一致的,但在底层操作系统接口调用、内存映射实现细节以及平台支持成熟度上存在显著差异。 以下是 ZGC 在 Linux 和 Windows 实现上的主要区别对比&#xff…...

揭秘OZON选品公司性价比:如何用最少的钱选出爆款?

在OZON平台上掘金,选品无疑是决定成败的第一步。然而,面对海量商品和瞬息万变的市场,许多卖家陷入了两难:要么投入大量时间和金钱盲目试错,要么依赖昂贵的选品工具,成本高企却收效甚微。今天,我…...

OpenClaw+SecGPT-14B实战:Git仓库敏感信息自动化审计

OpenClawSecGPT-14B实战:Git仓库敏感信息自动化审计 1. 为什么需要自动化敏感信息审计 去年我在维护一个开源项目时,意外发现某次提交中包含了AWS密钥。虽然及时撤销了提交,但这件事让我意识到:人工检查Git历史就像大海捞针。传…...

audio policy config xml解析过程

一、获取xml文件1.启动audioserviceframeworks/av/media/audioserver/main_audioserver.cpp //main函数中定义一个对象&#xff1a; const auto aps sp<AudioPolicyService>::make();2.执行构造函数并mCreateAudioPolicyManager(createAudioPolicyManager)进行初始化fra…...

《AI Agent生产力部署指南:OpenClaw + vLLM 本地化实战——(三)OpenClaw与LLM工具链适配》

上一章节中我们完整介绍了如何在服务器中配置vLLM服务,如何运行vLLM,以及如何搭建本地机器作为中间跳转连接虚拟机与服务器的通信。 本章第五节完成最后一个步骤对openclaw的相关配置,让本地能成功对话虚拟机,虚拟机成功调用服务器模型。 下面直接开始吧! (五)配置ope…...

PRD文档模板

xxxxxx 需求规格说明书 南京市xxx信息服务有限公司 修订记录 版本号 修订日期 修订人 修订描述 V1.0 20190203 xxxxx 初稿 一、概述 1.1需求背景 说明需求背景&#xff0c;为什么要做该需求&#xff0c;主要是为了解决什么问题等 背景举例&#xff1a;目前…...

需求用例的写法

一、为什么写需求用例 流程图为需求用例提供了关键路径&#xff0c;而需求用例则是对业务场景的全面还原。本文将从以下四个方面阐述用例的信息&#xff1a; 用例的定义用例的粒度用例的例子用例的关键点解释 我写需求文档有几大准则&#xff0c;是需要时刻铭记和实践的&…...

Windows下OpenClaw全攻略:Qwen3-14B镜像接入与自动化测试

Windows下OpenClaw全攻略&#xff1a;Qwen3-14B镜像接入与自动化测试 1. 为什么选择WindowsOpenClaw组合 去年我在尝试自动化办公流程时&#xff0c;发现Mac环境下的OpenClaw虽然安装便捷&#xff0c;但团队里多数同事仍在使用Windows系统。为了让这套工具真正落地&#xff0…...

这个免费AI工具太狠了:我每周省下10小时学习时间

这个免费AI工具太狠了&#xff1a;我每周省下10小时学习时间 改写自 The PyCoach 于 2026 年 3 月 20 日发布的文章《NotebookLM: The Best AI Tool to Learn Any Topic Faster》&#xff0c;并参考 Diana Dovgopol 的共同观点。 很多人以为&#xff0c;学习慢&#xff0c;是因…...

WiFiEspAT:基于AT指令的嵌入式Wi-Fi协处理器适配库

1. 项目概述WiFiEspAT 是一个面向嵌入式系统的轻量级、高可靠性网络适配层库&#xff0c;其核心目标是将 ESP8266 或 ESP32 模块作为独立的 Wi-Fi 网络协处理器&#xff08;Network Coprocessor&#xff09;&#xff0c;通过标准 AT 指令集与主控 MCU&#xff08;如 AVR、ARM C…...

IEEE/ASME Transactions on Mechatronics | 院士团队让移动机器人在复杂环境中学会主动避障

论文信息 英文题目&#xff1a; Vector Field Augmented Reinforcement Learning for Adaptive Motion Planning of Mobile Robots 中文题目&#xff1a;面向移动机器人自适应运动规划的向量场增强强化学习 作者&#xff1a; Yang Lu, Weijia Yao, Cong Li, Yongqian Xia…...

DigitLed72xx库:工业级MAX7219/7221数码管驱动方案

1. DigitLed72xx 库概述&#xff1a;面向工业级 LED 显示控制的嵌入式驱动框架DigitLed72xx 是一款专为 MAX7219 和 MAX7221 七段数码管显示驱动芯片设计的轻量级、高可靠性嵌入式 C 库。该库并非简单的 Arduino 封装&#xff0c;其底层架构深度适配硬件 SPI 外设&#xff0c;支…...

【2026年最新600套毕设项目分享】基于微信小程序的科创微应用平台(30012)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

【2026年最新600套毕设项目分享】微信小程序的医院核酸检测服务系统(30011)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

2025_NIPS_CRRL: Learning Channel-invariant Neural Representations for High-performance Cross-day ...

文章核心总结 本文提出CRRL(Channel Rearrangement and Reconstruction Learning)框架,用于解决脑机接口(BCI)跨天解码中神经信号的通道级变异性问题,实现长期稳定解码。核心创新在于通过两个专用模块分别处理神经元丢失/新增、电极漂移两类变异,在多数据集上达成超两个…...

AI+声学:当物理规律遇见神经网络,如何颠覆传统模拟?

AI声学&#xff1a;当物理规律遇见神经网络&#xff0c;如何颠覆传统模拟&#xff1f; 引言 想象一下&#xff0c;模拟一个大型音乐厅的声场分布&#xff0c;传统方法可能需要超级计算机数小时的计算&#xff0c;而AI模型仅需秒级响应。这并非科幻&#xff0c;而是“AI for Sci…...

AI+电磁:当计算电磁学遇上人工智能,一场效率革命正在发生

AI电磁&#xff1a;当计算电磁学遇上人工智能&#xff0c;一场效率革命正在发生 引言 在6G通信、新能源汽车与高端芯片设计等领域&#xff0c;电磁仿真已成为不可或缺的“数字试验场”。然而&#xff0c;传统基于有限元&#xff08;FEM&#xff09;、时域有限差分&#xff08…...

软件系统规划步骤和可行性研究步骤

前者是系统开发初始阶段的宏观活动序列,后者则是规划阶段中的一项核心子任务。 一、软件系统规划步骤(典型过程) 系统规划通常属于软件生命周期的“项目立项与计划”阶段,常见步骤如下: 初步调查 识别项目机会、用户需求、业务痛点,明确系统建设的初步目标与范围。 问题…...

AI群演请就位—个人博客(一)

项目背景随着大语言模型能力的提升&#xff0c;AI在内容生成与互动体验中的应用日益广泛。传统互动叙事类产品&#xff08;如互动小说、角色扮演游戏&#xff09;主要依赖预设脚本与有限分支选择&#xff0c;存在剧情固化、重复体验感强、角色缺乏真实感等问题。大语言模型的出…...

C++零基础到工程实战(3.1):if语句、bool类型、算数逻辑比较运算符深入解析

目录 一、本节学习内容概要图 二、前言 三、if语句与逻辑判断 3.1 基础语法 &#xff08;1&#xff09;if 条件语句 &#xff08;2&#xff09;else if 与 else 3.2 常见错误 &#xff08;1&#xff09;多余分号导致逻辑块独立 &#xff08;2&#xff09;判断时误写赋…...

C++头文件详解:<iomanip> 头文件使用详解

目录 一、前言 二、浮点数精度控制 2.1 fixed 与 setprecision() &#xff08;1&#xff09;fixed 的作用 &#xff08;2&#xff09;setprecision(n) 的作用 &#xff08;3&#xff09;示例&#xff1a;RGB 转 YUV 计算 2.2 scientific 科学计数法 三、设置输出宽度与…...

CP880显示驱动库:车规级TFT-LCD底层控制与零拷贝实现

1. CP880显示驱动库深度解析&#xff1a;面向CARIAD车载信息娱乐系统的TFT-LCD底层控制方案1.1 库定位与工程背景CP880是专为大众集团CARIAD软件平台定制的嵌入式图形显示驱动库&#xff0c;核心目标是为车载信息娱乐系统&#xff08;IVI&#xff09;提供高可靠性、低延迟的TFT…...