初学者的贪心算法思路 📅 发布时间:2026/7/14 0:32:04 👁️ 浏览次数: 题目描述元旦快到了校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡他要把购来的纪念品根据价格进行分组但每组最多只能包括两件纪念品 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品乐乐希望分组的数目最少。你的任务是写一个程序找出所有分组方案中分组数最少的一种输出最少的分组数目。输入格式输入包含n2行:第1行包括一个整数w为每组纪念品价格之和的上眼 第2行为一个整数n表示购来的纪念品的总件数G第3-n2行每行包含一个正整数Pi (5 Pi w3)w表示所对应纪念品的价格。输出格式输出仅一行包含一个整数 ep最少的分组数目合样例输入100 9 90 20 20 30 50 60 70 80 90样例输出6思路题干要求每组最多 2 件总价≤w希望分组的数目最少。这是典型的贪心算法适用场景最优策略是先排序再用 “双指针” 匹配最小和最大的纪念品尽可能凑成一组从而减少总组数。方案1.先动态内存分配一块连续的内存用于存储数据。2.排序将所有纪念品价格从小到大排序方便后续双指针匹配。3.双指针贪心令左指针*left指向1所分配的内存的首位置最便宜的纪念品、右指针*right指向末位置最贵的纪念品如果*left *right w就让左指针右移、右指针左移否则说明最贵的纪念品过于昂贵故让其自成一组。为什么不让最便宜的自成一组题干要求分组尽可能少最便宜的纪念品可与相对较贵的纪念品组合。每一次成功分组后使得组数。4.思路转代码像动态内存分配、排序算法比较简单核心是双指针贪心的始末怎么实现。1始显然这个算法要多次处理所分配的内存也可以粗略理解成一维数组那么就要使用循环操作。主流的循环有for和while该选择哪一个由于最终要求的就是分的组数也就是循环的执行次数for循环无从下手。那么只有选择while循环了。2末既然已经选择while循环接下来就要思考循环的条件是什么。在上面3内我们规定了左右指针那么当循环执行到最后一组时一定只剩下了一或两个纪念品那么接着会发生什么当处理最后唯一一件纪念品时*left和*right指针是指向同一个位置的假设w100、这个时候剩下的纪念品价值是40运行完之后最后一组组合是{4040}。虽然与现实分组不符{40}但确实是一组此时*left跑到*right右边去了即*left*right。再假设w100最后一件纪念品价值是60这个时候*left *right w那么就会自成一组{40}与实际相同,此时*left也跑到*right右边去了即*left*right。当处理最后两件时此时满足*left *right w随后左右两个指针移动从全局来看就是二者换了个位置此时*left跑到*right右边去了即*left*right。可以看到最后的停止标志就是此时*left跑到*right右边即*left*right所以我要让这个循环执行只要此时*left *right。代码#includeiostream#includealgorithmusing namespace std;int main(){int w, n;cin w n;int* a new int[n];int* left a;int* right a n - 1;for (int i 0; i n; i){cin a[i];}sort(a, a n);int cnt 0;while (left right){if (*left *right w){left;right--;}else{right--;}cnt;}cout cnt;delete[] a;}
计算机毕业设计springboot基于JavaEE的驾驶员考试报名系统 基于SpringBoot的机动车驾驶培训预约与考务管理平台 基于JavaEE的驾校考试在线报名与智能调度系统 计算机毕业设计springboot基于JavaEE的驾驶员考试报名系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着汽车工业的持续发展和机动车保有量的快速增长,驾驶员培… 2026/7/13 4:24:45
KIHU快狐|4G触摸查询机景区户外导览离线地图查询终端应用机 [KIHU快狐] 4G触摸查询机在景区户外导览的独特魅力在景区户外导览领域,[KIHU快狐]的4G触摸查询机发挥着重要作用。这款终端应用机专为景区复杂的户外环境设计,拥有卓越的4G网络连接能力,即使在信号不稳定的偏远景区角落,也能快速获… 2026/7/11 14:19:06
2026冲刺用!8个降AIGC软件:继续教育降AI率全测评 在当前的学术环境中,AI生成内容(AIGC)已经渗透到各类论文写作中,尤其是在继续教育领域,越来越多的学习者开始依赖AI工具进行辅助写作。然而,随着检测技术的不断升级,如何有效降低AIGC率、去除AI… 2026/7/11 2:01:31
海外学校的敏捷开发和国内大厂不一样?教你用工业级流水线自证规范「蒸汽求职分享」 许多海外高校在进行多人团队大作业(Group Project)时,为了对齐现代软件工程的开发模式,往往也会在教学大纲中要求使用敏捷开发(Agile)。但受限于教学环境与协作周期,这种学术型的敏捷协作往往容… 2026/7/14 0:29:28
系统规划与管理师-云原生系统规划核心考点解析 一、引言云原生是软考高级系统规划与管理工程师考试中云服务规划模块的核心考点,本章分值占比 6-8 分,题型以客观选择题为主,核心考察概念辨析、架构特征匹配、技术场景应用三类内容。 从发展脉络来看,云原生概念起源于 2010 年 P… 2026/7/14 0:29:28
【Claude多语言翻译能力深度测评】:覆盖127种语言,实测准确率高达92.3%的隐藏技巧曝光 更多请点击: https://codechina.net 第一章:Claude多语言翻译能力的底层架构与技术演进 Claude系列模型的多语言翻译能力并非依赖传统统计机器翻译(SMT)或独立编码器-解码器结构,而是深度内生于其统一的自回归语言建模… 2026/7/14 0:27:27
Unity Addressables资源热更新实战:三步实现高效增量更新 1. 项目概述与核心价值最近在项目里折腾资源热更新,发现很多团队还在用传统的AssetBundle,每次更新都得重新打包、上传、下载,流程繁琐不说,还容易出错。后来我们全面转向了Unity的Addressables系统,发现它简直是资源管… 2026/7/14 0:23:25
Kyoto Denkiki KDS-30350RH 电源模块 Kyoto Denkiki KDS-30350RH 电源模块 产品特点Kyoto Denkiki KDS-30350RH 电源模块出自日本京都电机器,专为半导体刻蚀等精密工艺设备提供高压直流供电,输出强劲、运行稳定。以下为该型号的十五项主要特点:京都电机器原厂出品,日本… 2026/7/14 0:21:24
装修家装电销机器人 在装修家装行业,传统电销面临诸多痛点,电销机器人的出现为行业带来了新的发展契机。传统电销痛点凸显装修家装行业传统电销工作强度大,人工成本高。有数据显示,人工坐席每天要拨打大量电话,其中无效号码占比达一定比例… 2026/7/14 0:21:24
XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南 1. 项目概述:当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”,我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏,却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am… 2026/7/14 0:05:14
2026普通文员学数据分析的价值 一、2026年普通文员学习数据分析的必要性随着数字化转型加速,数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力,并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公:通过数据分析工具&a… 2026/7/14 0:05:14
2026从计划员到主管,生产管理者学数据分析有用吗? 一、生产管理领域的职业发展路径 从计划员到主管的角色转变,是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作,而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&… 2026/7/14 0:05:14
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/13 9:31:08
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/13 2:34:55