贪心算法与动态规划在资源调度中的应用:以P1717钓鱼问题为例
1. 项目概述从“钓鱼”到“信奥”的算法思维跃迁看到“P1717 钓鱼”这个标题很多刚接触信息学奥赛信奥的同学可能会一愣以为是要写一个模拟钓鱼的小游戏。但如果你真的这么想那就掉进出题人的“陷阱”里了。信奥的题目尤其是像P1717这样的经典题从来都不是在考察你如何用代码去模拟一个生活场景的表象而是在考察你能否透过现象看到其背后贪心算法与动态规划思想的本质。这道题本质上是一个资源分配与时间规划的优化问题它模拟了一个钓鱼者在多个鱼塘之间做决策的过程每个鱼塘的鱼量会随时间减少从一个鱼塘移动到另一个鱼塘需要时间。你的目标是在有限的总时间内规划出一条最佳的移动和垂钓路线使得钓到的鱼总数最多。这听起来是不是很像我们在现实生活中面临的多任务调度或者投资决策问题没错信奥的魅力就在于此它将抽象的算法思想巧妙地包装在生动的场景之下。今天我就以一名过来人的身份带你彻底拆解P1717不仅告诉你C代码怎么写更重要的是帮你建立起解决这类优化问题的通用思维框架。无论你是正在备赛的信奥选手还是希望提升算法能力的C开发者这篇从思路到代码、从理论到调试的完整攻略都将是你刷题路上的一把利器。2. 核心思路解析为什么不能“一根竿钓到底”在动手写代码之前我们必须先把题目“嚼碎”。P1717题目的核心约束条件通常可以归纳为有N个鱼塘排成一条直线你从第1个鱼塘出发在每个鱼塘钓鱼第一个单位时间能钓到f[i]条鱼但每多钓一个单位时间钓到的鱼就会减少d[i]条直到减为0从鱼塘i走到鱼塘i1需要花费t[i]个单位时间你总共有H个小时通常以小时或“5分钟”为一个时间单位。目标是最大化钓到的鱼的总数。新手最容易陷入的第一个思维误区是找一个初始鱼最多的鱼塘然后一直钓到结束。这忽略了两个关键因素鱼的衰减和移动的时间成本。可能某个鱼塘初始鱼多但衰减极快d[i]很大钓不了多久就没鱼了而另一个鱼塘初始鱼量中等但衰减慢长期收益更高。同时移动耗时意味着这段时间你一条鱼也钓不到是纯粹的“机会成本”。因此正确的解题思路是枚举最终停留的鱼塘。我们假设钓鱼人最终停在了第k个鱼塘1 k N。那么他从1号鱼塘走到k号鱼塘的总移动时间是固定的即sum(t[1] t[2] ... t[k-1])。那么剩下的纯钓鱼时间T H - 总移动时间。接下来的问题就变成了在T个单位时间内如何分配时间给前k个鱼塘因为你不会去k后面的鱼塘才能使总钓鱼数最大这时问题就转化为了一个经典的贪心选择问题在每一单位时间内我们都应该选择当前能钓到鱼最多的那个鱼塘从1到k中选去钓。因为时间是离散的且钓鱼的收益只与当前鱼塘的当前鱼量有关与历史无关。这就像一个优先级队列堆我们每次都从队列中取出最大值当前最佳鱼塘钓鱼后更新该鱼塘的鱼量减去衰减量d[i]但不能小于0再放回队列重复T次。注意这里有一个非常重要的前提即移动时间只在鱼塘间转移时发生在同一个鱼塘连续钓鱼不需要额外移动时间。正是这个前提使得我们可以在确定最终鱼塘k后将时间分配问题转化为全局贪心。3. 算法设计与数据结构选型基于上面的思路我们的算法框架就清晰了外层循环枚举最终停留的鱼塘编号k从1到N。计算可用钓鱼时间T H - 从1走到k的总时间。如果T 0说明连移动时间都不够直接跳过。内层贪心模拟初始化一个数据结构维护前k个鱼塘的当前可钓鱼数量。初始值就是各自的f[i]。进行T次循环每次从数据结构中取出当前可钓鱼数量最大的值将其加入总答案对于当前k然后更新该鱼塘的可钓鱼数max(0, 当前值 - d[i])再将其放回数据结构。更新全局答案对于每个k计算出的总钓鱼数都与全局最大值比较保留更大的那个。现在关键就在于数据结构的选择。我们需要一个能支持快速取出最大值、更新值、再插入的数据结构。最直接的选择是最大堆优先队列。在C中priority_queue默认是最大堆队首为最大元素完美契合需求。数据结构定义细节 我们不能只把鱼的数量存入堆因为取出最大值后我们需要知道它来自哪个鱼塘以便根据该鱼塘的衰减率d[i]来更新数值。因此堆中存储的元素应该是一个pairint, int例如(当前可钓鱼数, 鱼塘编号)。priority_queue会对pair的第一个元素即可钓鱼数进行降序排序。复杂度分析外层循环O(N)内层贪心模拟需要构建一次堆O(k log k)和进行T次操作每次log k。最坏情况下kNT≈H因此总复杂度约为O(N * (N log N H log N))。对于信奥竞赛的数据范围通常N25 H16*12这个复杂度是完全可接受的。4. C代码实现与逐行精讲理论说得再多不如一行代码。下面是我在多次提交和优化后总结出的清晰、高效的AC代码。我会加上非常详细的注释确保你能看懂每一行的意图。#include iostream #include vector #include queue // 用于priority_queue #include algorithm // 用于max函数 using namespace std; int main() { int N, H; cin N; // 鱼塘数量 // 注意题目中H可能以小时为单位但钓鱼以5分钟为单位需要转换。 // 这里假设输入已处理好H直接代表可用的“5分钟”单位数。务必仔细读题 cin H; H * 12; // 如果H是小时则转换为“5分钟”单位。根据具体题目要求调整。 vectorint f(N 1), d(N 1), t(N 1); // 下标从1开始符合题意 for (int i 1; i N; i) cin f[i]; for (int i 1; i N; i) cin d[i]; for (int i 1; i N; i) cin t[i]; // t[i]表示从i走到i1的时间 int ans 0; // 全局最大钓鱼数 // 1. 枚举最终停留的鱼塘k for (int k 1; k N; k) { // 计算走到鱼塘k所花费的总移动时间 int walk_time 0; for (int i 1; i k; i) { walk_time t[i]; } // 计算纯钓鱼时间 int fish_time H - walk_time; if (fish_time 0) { continue; // 时间不够走到k直接尝试下一个k } // 2. 使用最大堆贪心计算在k鱼塘结束时的最大收益 priority_queuepairint, int pq; // 最大堆存储(可钓鱼数, 鱼塘编号) // 初始化将前k个鱼塘的初始鱼量加入堆 for (int i 1; i k; i) { if (f[i] 0) { // 只有初始有鱼的鱼塘才值得加入考虑 pq.push({f[i], i}); } } int current_ans 0; // 在fish_time个单位时间内每次选择最优鱼塘 while (fish_time 0 !pq.empty()) { auto [fish_num, pond_idx] pq.top(); // C17结构化绑定清晰取出数据和编号 pq.pop(); current_ans fish_num; // 钓上来的鱼加入当前k的答案 // 更新该鱼塘的鱼量减去衰减量但不能小于0 int next_fish_num max(0, fish_num - d[pond_idx]); if (next_fish_num 0) { // 如果更新后还有鱼则放回堆中参与后续时间点的竞争 pq.push({next_fish_num, pond_idx}); } // 如果next_fish_num 0则该鱼塘已无鱼无需再放回 fish_time--; // 消耗一个单位时间 } // 3. 更新全局答案 ans max(ans, current_ans); } cout ans endl; return 0; }关键代码段精讲与避坑指南时间单位转换(H * 12)这是第一个大坑题目中总时间H通常以“小时”给出但钓鱼和移动都是以“5分钟”为一个基本单位。1小时12个5分钟。务必仔细阅读题目输入格式有些题目可能已经转换好有些则需要你自己转。忽略这一步会导致时间计算完全错误。下标处理题目中鱼塘编号通常从1开始。我们使用vectorint f(N1)来存储让下标与编号对应避免思维混乱。t[i]表示从i到i1的时间所以只需要N-1个输入。贪心循环的终止条件(while (fish_time 0 !pq.empty()))这里有两个条件。一是时间没用完(fish_time0)二是堆里还有鱼可钓(!pq.empty())。如果某个k下所有鱼塘的鱼都钓光了但时间还有剩循环也会正确终止。pq.empty()可能发生在鱼塘初始鱼量少且衰减快的情况下。鱼塘更新逻辑next_fish_num max(0, fish_num - d[pond_idx])。使用max函数确保鱼量不为负。只有当更新后的鱼量0时才需要放回堆中。如果已经为0放回堆里也永远不会被选中反而增加无谓的操作。pair在堆中的比较priority_queuepairint, int默认按照pair的第一个元素first降序排序如果first相同则按second降序排序。这符合我们的需求因为我们需要的是当前鱼量最大的鱼塘编号顺序不影响。5. 测试用例与调试技巧写完代码不代表万事大吉自己设计测试用例进行验证是必不可少的环节。下面提供几个有代表性的测试用例并教你如何用打印调试法快速定位问题。测试用例1基础验证输入 2 1 // 1小时即12个5分钟 10 1 // f110, f21 2 5 // d12, d25 2 // t12 (从1到2需要2个5分钟)手动推导只停留在1号塘移动时间0钓鱼时间12。每次钓10然后86420... 总和 108642 30。走到2号塘移动时间2钓鱼时间10。需要分配时间给1和2。最优策略先在1钓10然后2钓1但2号塘衰减5钓一次后就为0了接着全在1钓。计算略复杂但显然总收益不会超过30。预期输出30测试用例2移动时间影响巨大输入 3 1 // 12个5分钟 100 10 1 // 1号塘鱼极多 1 1 1 // 衰减很慢 10 10 // 移动时间非常长从1到2就要10单位到3要20单位分析虽然1号塘鱼多但走到2、3号塘的代价太高。最终最优策略很可能就是全程待在1号塘钓鱼。你需要验证你的程序在计算fish_time H - walk_time时当walk_time很大导致fish_time为负或零时是否正确跳过。测试用例3鱼塘快速枯竭输入 2 1 5 100 5 100 // 衰减极快钓一次就几乎没了 1分析考验你的贪心逻辑。在时间有限的情况下应该先钓哪个是当前鱼量最大的2号塘100条还是考虑衰减后收益更持久的1号塘贪心算法每次选当前最大所以会先钓2号塘的100条然后它变成0接着钓1号塘的5条然后它变成0。总收益105。你需要验证程序在鱼塘鱼量降为0后是否不再将其放回堆中。调试技巧实录当程序结果不对时不要盲目修改。建议在关键位置添加打印语句打印枚举过程在外层k循环内打印k, walk_time, fish_time看时间计算是否正确。cout [Debug] k k , walk_time walk_time , fish_time fish_time endl;打印堆的状态在内层while循环开始前或每次操作后打印堆的内容需要临时拷贝堆。这能帮你确认每次选择的鱼塘是否正确以及鱼塘鱼量更新是否正确。// 注意打印堆会破坏其结构仅用于调试。正式提交前务必删除。 auto temp_pq pq; while(!temp_pq.empty()) { auto [num, idx] temp_pq.top(); temp_pq.pop(); cout ( num , idx ) ; } cout endl;边界条件检查特别注意H的转换、数组下标是否越界、以及当所有鱼塘鱼量都为0时堆为空的情况。6. 算法优化与思维延伸上面的解法已经可以AC但我们可以从两个角度进行思考和延伸这有助于你应对更复杂的问题。优化点避免重复建堆在外层k循环中每次我们都需要为前k个鱼塘重新建堆。当k增加时我们其实只是在上一次堆前k-1个鱼塘的基础上加入了第k个鱼塘的初始状态。我们可以维护一个“全局”的堆当k递增时只需将第k个鱼塘的初始状态入堆即可。但注意这样做有一个前提即鱼塘的衰减是不可逆的且我们模拟钓鱼时时间T对于不同的k是不同的。直接复用堆的状态会很复杂因为鱼塘的当前鱼量依赖于已经“消耗”的钓鱼时间。对于本题数据范围重复建堆的代价可以接受且逻辑更清晰。但在某些变种题或数据量更大的情况下这种优化思路值得考虑。思维延伸如果移动时间不是线性的原题中鱼塘是线排列的从i到j的时间是中间所有t的和。如果鱼塘分布在一个带权无向图中移动时间由边权决定问题就变成了一个更复杂的图论与资源规划结合的问题。这通常需要结合最短路算法如Dijkstra先预处理出从起点到各鱼塘的时间然后再结合动态规划或更复杂的搜索策略来求解。这已经超出了NOIP/信奥初赛的范畴但可以作为算法兴趣的延伸探索。从“钓鱼”到“通用模型”请务必理解P1717的本质是一个带时间成本的序列资源调度问题。你可以把它映射到很多场景生产调度多个车间鱼塘每个车间生产速率随时间下降鱼量衰减切换车间需要准备时间移动时间在总工时内最大化产量。投资决策多个项目鱼塘每个项目初期回报高但递减衰减转换投资标的有关联成本移动时间在总周期内最大化总回报。掌握这个模型你就掌握了解决一类问题的钥匙。7. 常见错误与排查清单在实现和提交过程中以下是新手最容易踩的坑我把它整理成一张排查表方便你对号入座错误现象可能原因排查与解决方法样例通过但提交后Wrong Answer (WA)1.时间单位未转换最最常见题目给的H是小时但你没乘以12。2.数组下标错误t[i]的输入循环边界应该是i1; iN误写成iN导致数组越界或读入错误数据。3.忽略“鱼量为0”在初始化堆或更新后入堆时没有判断f[i]0或next_fish_num0将鱼量为0的鱼塘加入堆浪费操作且可能影响逻辑虽然结果可能偶然正确。4.贪心逻辑瑕疵在while循环中先fish_time--再判断fish_time0可能导致多进行一次无效操作。1. 反复审题确认时间单位。2. 仔细检查所有数组的声明大小和循环范围特别是t数组只有N-1个元素。3. 在pq.push前加强判断if(f[i] 0)和if(next_fish_num 0)。4. 确保循环条件为while(fish_time-- 0 !pq.empty())或使用清晰的while(fish_time0){... fish_time--;}。运行超时 (TLE)1.复杂度估计错误在极端数据下如N100, H很大O(N^2 log N)可能超时。但本题数据通常较弱。2.死循环while循环条件有误例如fish_time未递减或堆永远不为空当鱼量更新逻辑错误一直将非正数入堆。1. 确认题目数据范围本题一般不会卡此算法。2. 使用调试技巧打印fish_time和堆大小观察循环是否按预期结束。检查鱼塘鱼量更新逻辑确保为0后不再入堆。部分测试点错误1.初始化答案ans为0如果所有鱼塘初始鱼量都为0正确答案应该是0。但如果ans初始化为-1或其他负数且程序逻辑在某些情况下未更新ans则可能输出错误。2.整数溢出虽然本题数据一般不会溢出但若H很大鱼量衰减慢总钓鱼数可能超过int范围约21亿。1. 将ans初始化为0是安全的。2. 估算最大可能值假设每个时间单位都钓100条鱼H最大可能为16*12192小时则最大值为19200远小于int上限。但养成估算习惯是好的必要时使用long long。编译错误 (CE)使用了C17特性如结构化绑定auto [a, b] ...但在线评测系统编译器版本较低如C11。最稳妥的写法是避免使用新特性。将auto [fish_num, pond_idx] pq.top();改为int fish_num pq.top().first;int pond_idx pq.top().second;pq.pop();最后我个人的一点心得是信奥刷题理解题意、抽象模型、手动模拟小样例这三步比直接写代码更重要。P1717就是一个绝佳的范例。当你真正吃透了这道题以后再遇到“挤牛奶”、“加工生产”这类带有时间序列和衰减特性的调度问题你都能迅速识别出它和“钓鱼”是同一个内核。刷题不是背代码而是锻炼这种“看穿表象直达本质”的算法思维。希望这篇超详细的拆解能帮你把这道题以及它背后的思想真正钓上来收入囊中。

相关新闻

SpringBoot海产品电商平台开发实战与毕业设计指南

SpringBoot海产品电商平台开发实战与毕业设计指南

1. 项目概述:SpringBoot海产品销售平台设计与实现这个基于SpringBoot的海产品销售平台是我在指导计算机专业毕业设计时的一个典型范例项目(编号47585)。这类电商系统在高校计算机专业实践中非常常见,它完整涵盖了从后台管理到前端…

2026/8/4 2:28:38 阅读更多 →
开源AI代码审查工具炸场GitHub:14,500星,比Claude Code省9倍Token,行级精准零误报

开源AI代码审查工具炸场GitHub:14,500星,比Claude Code省9倍Token,行级精准零误报

一、AI生成的代码越来越多,但谁来审? 2026年6月,一个标志性事件震动了开源圈——Ladybird浏览器项目宣布停止接受公开代码贡献。 原因很直白:AI PR 太多了。每天几十个 AI 生成的 Pull Request 涌进来,维护者根本审不过…

2026/8/4 2:27:38 阅读更多 →
从异步通信视角解析系统交互模式:当技术遇上社交隐喻

从异步通信视角解析系统交互模式:当技术遇上社交隐喻

最近在技术社区看到一个很有意思的讨论,标题是“女孩从不主动发微信,但是挺乐意回微信,这样到底有没有戏?”。乍一看,这似乎是一个情感或社交话题,但作为一名开发者,我立刻意识到,这…

2026/8/4 2:27:38 阅读更多 →

最新新闻

零基础三个月通关高项考试:高效备考方案解析

零基础三个月通关高项考试:高效备考方案解析

1. 项目概述:零基础备考高项的成功路径去年冬天,当我决定挑战信息系统项目管理师(高项)考试时,面对市面上五花八门的培训机构和良莠不齐的师资力量,确实踩过不少坑。直到遇到张老师的课程体系,才…

2026/8/4 4:04:33 阅读更多 →
GPT-5.6 Luna 降价 80%:从 24% 到 90% 的缓存命中率,OpenAI 的价格战打在了工程层

GPT-5.6 Luna 降价 80%:从 24% 到 90% 的缓存命中率,OpenAI 的价格战打在了工程层

2026 年 7 月 30 日,OpenAI 宣布 GPT-5.6 系列 API 调价。最轻量的 Luna 输入价格从每百万 token 一美元降到零点二美元,输出价格从六美元降到一点二美元,降幅百分之八十。中档的 Terra 降价百分之二十,旗舰 Sol 价格不动&#xf…

2026/8/4 4:04:33 阅读更多 →
交易系统构建:从概率优势到风险管理

交易系统构建:从概率优势到风险管理

1. 从赌徒到交易大师的认知跃迁《股票作手回忆录》第七章中,杰西利弗莫尔用血泪教训揭示了一个残酷真相:华尔街没有新鲜事,人性永不变。1907年棉花期货战役中,他曾在三天内亏损90%本金,这次惨败让他彻底认清了"凭…

2026/8/4 4:04:32 阅读更多 →
三重融合验证:提升意图识别准确率的工程架构实践

三重融合验证:提升意图识别准确率的工程架构实践

1. 项目概述:从“听懂”到“理解”的进化 在智能对话系统的开发中,意图识别(Intent Recognition)一直是决定交互体验成败的核心技术。早期的规则匹配,到后来的机器学习分类,我们一直在努力让机器“听懂”用…

2026/8/4 4:04:32 阅读更多 →
CBCX:把多语言支持做到位——维度对照与提示整理

CBCX:把多语言支持做到位——维度对照与提示整理

对新手与注重稳健体验的外汇内容读者而言,“能看懂”往往比“堆概念”更重要。围绕CBCX,以下重点写清解释是否通俗、规则是否易查、提示是否前置,以及服务是否具备连续性。在外汇相关服务中,读者最在意的通常是信息是否清楚、提示…

2026/8/4 4:04:32 阅读更多 →
C++类型系统深度解析与高性能编程实践

C++类型系统深度解析与高性能编程实践

1. 为什么C程序员必须吃透类型系统在C社区里流传着这样一句话&#xff1a;"真正理解C的类型系统&#xff0c;才算摸到了这门语言的门槛。"我至今记得第一次用std::vector<std::unordered_map<std::string, std::variant<int, float>>>这样的嵌套类…

2026/8/4 4:03:32 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标&#xff1a;掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码&#xff1a;多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话&#xff0c;第一次听说美国这个老牌折扣网站的跨境卖家&#xff0c;十个有八个会问同一个问题&#xff1a;这个平台到底是干嘛的&#xff1f;我见过一个做家居出口的朋友&#xff0c;他在亚马逊上月销二十万美金&#xff0c;却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者&#xff1a;邓兵、刘建国通讯单位&#xff1a;清华大学DOI&#xff1a;https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素&#xff08;REEs&#xff09;是清洁能源技术与电子器件不可或缺的核心原料&#xff0c;然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →