第四单元 贪心算法 4.1 装载问题 4.2 区间问题 4.3 删数问题 4.4 工序问题 4.5 种树问题 4.6 马的哈密尔顿链4.7 三值的排序 4.8 田忌赛马 4.9 小结

本文主要是介绍第四单元 贪心算法 4.1 装载问题 4.2 区间问题 4.3 删数问题 4.4 工序问题 4.5 种树问题 4.6 马的哈密尔顿链4.7 三值的排序 4.8 田忌赛马 4.9 小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第四单元 贪心算法

以下 9 个问题都给出了相应贪心策略,但是为什么这些策略是正确的呢?请自己证明(提示:反证法)。

4.1 装载问题

(1) 简单的装载问题

【问题描述】有 n 件物品和一个容量为 C 的背包。第 i 件物品的重量是 w[i]。求解将哪些物品装入背包可物品
数量最多。
【贪心策略】将物品重量从小到大进行排序,优先挑重量轻的装入背包。

(2) 部分背包问题

【问题描述】有 n 件物品和一个容量为 C 的背包。第 i 件物品的重量是 w[i],价值是 v[i]。每个物体可以取
走一部分,价值和重量按比例计算。求解将哪些物品装入背包可使价值总和最大。
【贪心策略】将背包按照单价(价值/重量的比值)排序。从物美价廉(单价尽可能大)的物体开始挑起,直
到背包装满或没有物体可拿。

(3) 乘船问题

【问题描述】有 n 个人,第 i 个人的重量是 wi。每艘船的最大载重量都是 C,且最多能乘两个人。用最少的船
装尽可能多的人。
【贪心策略】让最轻的人和能与他同船的最重的人乘一条船。如果办不到,就一人一条船。

 4.2 区间问题

(1) 选择不相交区间

【问题描述】数轴上有 n 个开区间(ai, bi)。选择尽量多的区间,使这些区间两两没有公共点。
【贪心策略】按 bi 从小到大的顺序排序,然后一定选择第一个区间。接下来把所有与第一个区间相交的区间排
除在外。这样在排序后再扫描一遍即可。

(2) 区间选点问题

【问题描述】数轴上有 n 个闭区间[a_{i},b_{i}]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含
有的点可以是同一个)。
【贪心策略】把所有区间按 b_{i}从小到大排序(b_{i} 相同时,a 从大到小排序),然后一定取第一个区间的最后一
个点。

(3) 区间覆盖问题

【问题描述】数轴上有 n 个闭区间[a_{i},b_{i}]。选择尽量少的区间来覆盖指定线段[s, t]。

 【贪心策略】
1. 预处理:扔掉不能覆盖[s, t]的区间。

这篇关于第四单元 贪心算法 4.1 装载问题 4.2 区间问题 4.3 删数问题 4.4 工序问题 4.5 种树问题 4.6 马的哈密尔顿链4.7 三值的排序 4.8 田忌赛马 4.9 小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/290846

相关文章

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例