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

贪心算法简介

贪心算法简介

贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而试图获得结果是全局最优的算法。它并不保证在所有情况下都能得到全局最优解,但适用于具有“贪心选择性质”的问题,即局部最优解能导致全局最优解。

例题1:盛最多水的容器

问题描述
给定一个长度为n的整数数组height,每个元素表示垂直线的长度。找出两条线与 x 轴共同构成的容器可以容纳最多的水。容器不能倾斜。

思路讲解
使用双指针法,从数组两端开始。容量由指针间距和较短线的高度决定。贪心策略:每次移动较短线的指针,因为移动较长线不会增加容量(宽度减小,高度受限于短线)。重复直到指针相遇,记录最大容量。

C语言代码实现

intmaxArea(int*height,intheightSize){intleft=0,right=heightSize-1;intmax_water=0;while(left<right){inth=height[left]<height[right]?height[left]:height[right];intwater=h*(right-left);if(water>max_water)max_water=water;if(height[left]<height[right]){left++;}else{right--;}}returnmax_water;}

leetcode原题

例题2:最长回文串

问题描述
给定一个字符串s,用其中的字符构造最长的回文串,返回最大长度。注意:字符可以任意顺序排列,但回文串需对称。

思路讲解
统计每个字符的出现频率。贪心策略:对于每个字符,如果出现偶数次,全部使用;如果出现奇数次,使用偶数部分(即减1),并标记存在奇数字符。最后,如果有奇数字符,长度加1(中心可放一个奇数字符)。

C语言代码实现

intlongestPalindrome(char*s){intcount[128]={0};intlen=strlen(s);for(inti=0;i<len;i++){count[(int)s[i]]++;}intmaxlen=0;inthasodd=0;for(inti=0;i<128;i++){if(count[i]%2==0){maxlen+=count[i];}else{maxlen+=count[i]-1;hasodd=1;}}if(hasodd)maxlen+=1;returnmaxlen;}

leetcode原题

总结

贪心算法适用于局部最优能导致全局最优的问题,如以上例题。在实际应用中,需验证问题是否具有贪心性质,否则可能需动态规划等其他方法。

http://www.cnnetsun.cn/news/52100.html

相关文章:

  • Windows11系统文件verifier.dll丢失或损坏问题 下载修复
  • C++树形数据结构————树状数组、线段树中“逆序对”的问题
  • 2025年B站视频下载终极指南:bilili工具完整使用教程
  • 教程 32 - 几何体系统
  • Cursor高级技巧与最佳实践
  • Cursor + MCP:冲击的不仅是前端,而是整个软件开发范式!
  • 2025年十大旗舰对决:极致轻薄成高端手机新战场
  • 【Vue3】 中 ref 与 reactive:状态与模型的深入理解
  • 毕设 stm32 RFID员工打卡门禁系统(源码+硬件+论文)
  • 全球最大、最领先的吉利全球全域安全中心正式发布
  • Android中Compose系列之按钮Button
  • wangEditor导入excel数据到html富文本编辑
  • 光伏电池simulink仿真模型 光伏电池建模仿真 包括改变温度 改变辐照度的特性分析 模型可...
  • JSP中如何利用分块技术实现百万文件上传优化?
  • 60、Ubuntu 安装硬件规划全攻略
  • 2025年12月— CET四六级答案
  • 锐捷RGSP | 端口安全技术原理与应用
  • Cameralink采集卡软件EspeedGrab使用讲解:4图像处理
  • 31、脚本编程进阶:Here文档、自上而下设计与流程控制
  • 信捷XDH系列PLC的追剪/飞剪/电子凸轮程序模板
  • 【大模型】-LangChain--stream流式同步异步
  • 兜兜英语每日短语:逃单篇
  • 计算机毕业设计springboot汽车智慧检修系统 基于SpringBoot的智能汽车故障预测与维修管理平台 融合IoT的SpringBoot车辆健康监测与维修决策系统
  • python3
  • 【3D图像技术分析与实现】Apple Vision Pro三维成像技术栈深度解析
  • 经典算法题详解之统计重复个数(三)
  • 移动应用开发实验室大一上考核
  • 云数据库服务(如AWS RDS)的优势和考虑因素?
  • 【设计模式|第四篇】适配器模式:让不兼容的接口协同工作
  • asgiref终极指南:高效解决Python异步通信难题