贪心算法习题

贪心算法求解:虚拟汽车加油问题 详细解答,贪心算法,Java求解! 阅读详情

问题一

题干:

一辆虚拟汽车在加满油之后可以行驶 n km。旅途中有 k 个加油站。设计一个有效算法,使得沿途加油的次数最少。终端输入正整数 n 和 k,表示汽车加满油后可行驶 n km,且旅途中有 k 个加油站。接下来输入 k+1个整数,表示第 k 个加油站与第 k-1个加油站之间的距离。第 0 个加油站表示出发地,汽车已加满油。第 k+1个加油站表示目的地。

解题思路:

设置两个变量petrol和tra,petrol用来存放加油的次数,tra用来存放当前状态下汽车能行驶的距离。初始状态下petrol=0,tra=n;每当汽车到达一个加油站就判断:可行驶的距离tra是否可以到达下一个加油站,若可以则dist[i]++;若不行,则回到上一个加油站,更新tra=n。

具体代码:

#include<iostream>
using namespace std;

int main()
{
	int n, k;
	cin >> n >> k;
	int* dis = new int[k + 2];
	for (int i = 0; i < k + 1; i++)
	{
		cin >> dis[i];
	}
	int i = 0, petrol = 0, tra = n;
	for (i = 0; i <= k; i++)
	{
		if (dis[i] <= tra)
		{
			tra = tra - dis[i];
		}
		else if(dis[i] > n)
		cout << "WRONG!";
		else
		{
			petrol++;
			i--;//回到上一个加油站
			tra = n;//加满油能走的距离
		}
	}
	cout << petrol << endl;
	return 0;
}

问题二:

题干:

设x1,x2,…,xn是实直线上的n 个点。用固定长度的闭区间覆盖这n 个点,至少需要多少个这样的固定长度闭区间?对于给定的实直线上的n个点和闭区间的长度k,设计解此问题的有效算法,计算覆盖点集的最少区间数。

解题思路:

每遍历到一个点时,判断该点能否与前面的点被覆盖在一个区间里,如果不能则将该点作为下一个区间的第一个点。

具体代码:

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	int n, k;
	cin >> n >> k;
	int i=0;
	int *a = new int[i];
	for (i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	sort(a + 1, a + 1 + n);
	int l = a[1], ans = 0, r = 0;
	for (int i = 1; i <= n; i++)
	{
		r = a[i];
		if (r - l > k)
		{
			ans++;
			l = r;
		}
	}
	if (r - l < k)ans++;
	cout << ans << endl;
}

问题三

题干:

在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a*b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。

解题思路:

由规律得:当先算两个较小的数是,得到的是最大值,当先算两个较大的数时,得到的是最小值。因此我们需要得到将输入数组逆序的拷贝。最后用计算结果覆盖。

具体代码:

#include<iostream>
#include<algorithm>
using namespace std;

int cmp(int a,int b)
{ 
	return a>b;
}

int main()
{
	int i,n,a[100],b[100],max,min;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>a[i];
		b[i]=a[i];//拷贝
	}
	sort(a,a+n);
	for(i=1;i<n;i++)
	{
		a[i]=a[i]*a[i-1]+1;
		sort(a+i,a+n);
	}
	max=a[i-1];
	sort(b,b+n,cmp);//降序排列
	for(i=1;i<n;i++)
		b[i]=b[i]*b[i-1]+1;
	min=b[n-1];
	cout<<max-min<<endl<<endl;
	return 1;
}


 

《算法导论》笔记(10)贪心算法 部分习题 习题16.1-4 区间图着色问题。边最多的顶点G,其边数n即需要的颜色数,也即教室数。有n种颜色,顶点标为第i种颜色,则此活动可放在第i个教室举行。从一顶点开始广度优先遍历,将相连接的点标为不同颜色,标颜色同时检查与此相连的所有点颜色不同。然后检查全部顶点,有未标色的顶点,按照上法重新开始标色。 习题16.1-5 如果每个活动有值vk,要求vk总和的最大值,那么这个题就需要用动态规划求解了。时间 阅读详情

相关推荐

洛谷贪心算法练习题

有 nn 个人在一个水龙头前排队接水,假如每个人接水的时间为 T_iTi​,请编程找出这 nn 个人排队的一种顺序,使得 nn 个人的平均等待时间最小。第一行为一个整数 nn。第二行 nn 个整数,第 ii 个整数 T_iTi​ 表示第 ii 个人的等待时间 T_iTi​。输出文件有两行,第一行为一种平均时间最短的排队顺序;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。输入 #1复制 10 56 12 1 99 1000 234 33 55 99 812 输出 #1复制 3 2 7

m0_62945899的博客 447

虚拟汽车加油问题 —— 【算法设计】贪心法

一辆汽车加满油后可行驶nkm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。

Ve99tr’s Blog 3049

2025最新OSM中国矢量数据保姆级下载指南(附百度网盘链接)

本文提供2025年OSM中国矢量数据的保姆级下载与使用指南。详细介绍了通过Geofabrik镜像站、QGIS插件及第三方平台获取数据的多种途径,重点解析了Shapefile格式数据的结构、WGS84坐标系特性,并指导进行格式转换与基础GIS应用,帮助用户高效合规地获取并利用这份开放地理数据资源。

weixin_29228781的博客 874

D - 活动选择

D - 活动选择 Description 学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后都不能中断。现在各个社团都提交了他们使用该中心的活动计划(即活动的开始时刻和截止时刻)。请设计一个算法来找到一个最佳的分配序列,以能够在大学生艺术中心安排不冲突的尽可能多的社团活动。 比如有5个活动,开始与截止时刻分别为: 最佳安排序列为:1,4,5。 Input 第一行输入活动数目n(0<n<100); 以后输入n行,分别输入

weixin_44145887的博客 1052

猫耳语音下载(mediadown)

西宾猫耳语音下载工具,能够帮助你下载猫耳音频节目。如果你是会员,它还能帮你下载会员节目。

new_stranger的专栏 2490

信号完整性SI-PI

SI设计的主要难点在于需要综合信号的幅度、噪声、边沿、延时等影响信号质量的多种因素,并且这种因素常常相互依赖、互相影响,交叉在一起。1.1、信号过冲 (欠阻尼状态,可并联一个合适的电容):过冲会造成强烈的电磁干扰,另一方面会损伤后面的电路的输入及,甚至失效。信号完整性SI:是指电路系统中信号的质量,如果在要求的时间内,信号能不失真的从源端传输到接收端。优点:提供较慢的上升时间,减少反系量,产生更小的EMI,从而降低过冲,增加信号质量。导线之间的间距过小, 就会产生串扰,间距越小、串扰越大。

weixin_42304393的博客 4867

贪心算法习题讲解

实验室的算法课程,今天轮到我给师弟师妹们讲贪心算法,顺便也复习一下。贪心算法这个名字听起来唬人,其实通常是比较简单的。虽然通常贪心算法的实现非常容易,但是,一个问题是否能够使用贪心算法,是一定要小心的。本文课通过LeetCode的一些习题,我们来回顾一下贪心算法。

码上暴富 1853

芯片研发完整全流程

芯片研发全流程可分为需求与架构设计、前端逻辑设计、后端物理设计、晶圆制造、封装测试五大阶段,涉及16个核心步骤。研发过程需要多学科交叉协作,包括微电子、物理、材料、计算机等。关键注意事项包括验证优先、工艺约束遵循、可测性设计等。芯片设计需要绘制纳米级精度的物理版图,而非传统工程图纸,需使用专业EDA工具而非KiCad这类PCB设计软件。完整研发流程具有高投入、高风险特点,需严格遵循行业标准和规范。

weixin_44520581的博客 228

9.算法习题之贪心算法

关于贪心算法的面试习题

sam475259540的博客 333

matlab 点云学习目录【2026最新版】

matlab 点云学习目录。博客长期更新,本文最近更新时间为:2026年6月15日。

点云侠的博客 3万+

RAG面试内容整理-8. 文档分块策略(滑动窗口、语义切分)

RAG系统通常面对长文档或整篇知识库资料的检索需求,但大模型一次处理的文本长度有限,向量索引也需固定大小的文本片段。因此,将长文档拆分成合适片段是必不可少的步骤,被称为文档分块(chunking)策略。

不务正业的猿 690

贪心算法理论基础和习题【算法学习day.17】

##我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!

2301_79232523的博客 938

【PostgreSQL】Windows11下的PostgreSQL数据库安装tds_fdw扩展及使用(图文记录详细步骤)

【详解】【PostgreSQL】Windows11下的PostgreSQL数据库安装tds_fdw扩展及使用

tttzzzqqq2018的博客 2452

贪心算法习题其二【力扣】【算法学习day.19】

##我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!

2301_79232523的博客 1066

14.建立时间、保持时间以及vivado时序report的参考使用

在设计数字系统时,需要仔细考虑电路元件的选择和布局以及时序设计来满足建立时间和保持时间的要求。建立时间,又称为建立时间窗口或建立期,是指数字信号在触发器的时钟信号前沿到来之前,必须已经稳定存在的时间。在本章节将结婚扫建立时间和保持时间的基本原理,以及如何通过vivado处理建立时间和保持时间。通过使用同步电路,可以更好地控制数据传输的时序并满足建立时间和保持时间的要求。例如,在D触发器中,选择具有适当充电和放电特性的D端口元件可以确保在时钟信号前沿到达前数据已经稳定存在,并在时钟信号前沿到达后保持稳定。

FPGA/MATLAB学习教程/源码/项目合作开发 2985

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

贪心算法习题其三【力扣】【算法学习day.20】

##我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!

2301_79232523的博客 802

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

贪心算法习题其二【力扣】【算法学习day.18】

##我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!

2301_79232523的博客 732

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

贪心算法习题其四【力扣】【算法学习day.21】

##我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!

2301_79232523的博客 486

【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(四)

本篇文章是对贪心算法练习题的讲解,有关贪心算法的讲解可以看本系列的第一篇文章,这里就不再讲解,继续讲解相关练习题。

2301_82347435的博客 1360

习题3的解答——贪心算法

针对王洪志老师给的习题3中的习题,给出部分习题的简要的解答思路。(主要是没时间写仔细的分析)1.就是普通的分数背包问题,不解释。2.贪心选择:在不超过总币值n的条件下先选择币值最大的硬币,证明可以通过替换法进行证明。4.预处理:对所有的数据进行预处理,遍历所有的数据,找到位数最大的树,并将它的位数记为k;对所有位数小于k的树,通过在末尾加0的方式改造成k位的数据,例如:原数据:7、13、4、246...

1160200515的博客 2333

【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(三)

本篇文章是对贪心算法练习题的讲解,有关贪心算法的讲解可以看本系列的第一篇文章,这里就不再讲解,继续讲解相关练习题。

2301_82347435的博客 1322

贪心算法——经典习题

¡贪心算法 §比较直观,容易想到 §对“图”要求高 §很多特殊图上的问题可以贪心,(参见《算法图论》) §贪心问题的证明比较困难 §有时需要先排序,再贪心 ¡  例1 找钱问题,目前的钱币系统1,2,5,10,用来换钱是最优的。 §  贪心的证明 ▪      超过10 一定要用10,为什么? ▪      有5在,2的个数一定不超过3,因为如果有3个2,1个5,则换

白马笑西风的专栏 1049

【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(二)

本篇文章是对贪心算法练习题的讲解,有关贪心算法的讲解可以看本系列的第一篇文章,这里就不再重复讲解,直接继续讲解例题。

2301_82347435的博客 2098

【贪心算法】(一)贪心算法理论及基础习题

整理总结代码随想录贪心算法章节,介绍贪心算法的理论基础与思想,通过基础习题巩固贪心算法的核心思想,分析各题的局部最优解与全局最优解,同时引入一类存在两个维度的案例。

weixin_46216674的博客 1622

跟我一起学“仓颉”算法-贪心算法练习题

本章为大家详细的介绍了仓颉数据结构与算法中贪心算法练习题的内容。

Cool_foolisher的博客 340
上一篇: 回溯法习题
下一篇: 算法分析——0-1背包问题
Zephyr .
博客等级 码龄5年 29粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值