贪心算法应用例题

最优装载问题

#include <stdio.h>
#include <algorithm>//排序

int main()
{
	int data[] = { 8,20,5,80,3,420,14,330,70 };//物体重量
	int max = 500;//船容最大总重量

	int count = sizeof(data) / sizeof(data[0]);//物体数量
	std::sort(data, data + count);//排序,排完数组中的数据从小到大排列
	int tmp = 0;//记总重量加和
	int n = 0;//记物体总件数
	for (int i = 0; i < count; i++)//从小到大,从轻到重挨个放进去
	{
		tmp += data[i];
		if (tmp > max)
		{
			break;
		}
		n++;
	}
		printf("%d\n", n);
		return 0;

}

#include <stdio.h>
//给的数字是否能种下
bool canPlaceFlowers(int* data, int datasize, int n)//数组。数组长度,给的数字
{
	int i=0;//数组下标从0开始

	if (n == 0)//一朵不种
	{
		return true;//能
	}

	int count = 0;
	while (i < datasize)//在种地(数组)的长度里面
	{
		if (data[i] == 1)//当前有花1
		{
			i += 2;//空1再种01
		}
		else if (i > 0 && data[i - 1] == 1)//左边有花,当前没花0
		{
			i += 1;//1
		}
		else if (i + 1 < datasize && data[i + 1] == 1)//右边有花,当前没花0
		{
			i += 3;//101
		}
		else
		{
			//data[i]=1;种花,可不种,本题只要求数数字
			count++;//可种花空地+1
			i += 2;//空1再种01,类似if1

			if (count == n)//一等于就能,可大于
			{
				return true;
			}
		}
	}//条件都过一遍,i+到相应位置,符合while再进,不符若count<n就错
	return false;

}

int main()
{
	int data[] = { 1,0,0,0,1,0,0,0,0,0,0,1 };//顺序种逆序种最大count都是3
	if (canPlaceFlowers(data, sizeof(data) / sizeof(data[0]), 3))
	{
		printf("可以!\n");//return true;
	}
	else
	{
		printf("不可以!\n");
	}
	return 0;
}

例如:

输出【5,10】

相邻距离近的先发生碰撞

输出为空,全爆炸完了

输出【10】

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

//碰撞爆炸函数
int* collision(int* data, int dataSize, int* retSize)//行星数组,数组大小(行星个数),碰炸后输出的数组
{
	int n = 0;//记录爆炸的个数
	while (1)//
	{
		int pre = 0;//左边行星下标
		int next = 1;//右边行星下标

		while (next < dataSize)//在数组内
		{
			if (data[pre] * data[next] < 0)//左右行星异号,方向相反
			{
				if (data[pre] < 0)//左边行星向左,则右向右,左右远离
				{
					//pre++;这样会有bug,pre可能走到爆炸过的0位置
					//next++;
					//移到下一个比较位置
					pre = next;//跳过中间可能有的0
					next++;
					continue;//跳出重进while (next < dataSize)
				}
				//左右相接近,3种爆炸情况,左没(变0),右没,左右都没
				if (abs(data[pre]) > abs(data[next]))//左绝对值大于右,abs求绝对值头函数math.h
				{
					data[next] = 0;//右炸没变0
					n++;
				}
				else if (abs(data[pre]) < abs(data[next]))
				{
					data[pre] = 0;
					n++;
				}
				else//相等
				{
					data[pre] = 0;
					data[next] = 0;
					n += 2;
				}
				break;//出if (data[pre] * data[next] < 0)
			}

			//爆炸完出现0后的位置移动,3种
			if (data[pre] == 0)
			{
				pre = next;
				next++;
			}
			else if (data[next] == 0)//[next==0]--[10,2]
			{
				next++;
			}
			else
			{
				pre = next;
				next++;
			}
		}

		if (next >= dataSize)//出数组,出while 
		{
			break;
		}
	}
	*retSize = dataSize - n;//输出数组大小
	int* retArray = (int*)malloc(*retSize * sizeof(int));//动态申请数组
	for (int i = 0, k = 0; i < dataSize; i++)//遍历原数组
	{
		if (data[i]!=0)//data[i]不为0,为真,也可if (data[i])
		{
			retArray[k++] = data[i];//数组不为0粘贴
		}
	}
	return retArray;
}

int main()
{
	int data[] = { 10,2,-5 };
	int size;
	int *ret = collision(data, 3, &size);
	for (int i = 0; i < size; i++)
	{
		printf("%d", ret[i]);
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/599711.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

品高虚拟化后端存储的发展演进

在品高虚拟化技术不断发展的过程中&#xff0c;虚拟化的后端存储一直是关注的焦点之一。 本文将从最初的文件存储和NFS开始&#xff0c;追溯到集中式存储SAN&#xff0c;然后选择了Ceph的RBD方式&#xff0c;并最终抵达选择支持vhost协议的后端存储的现状&#xff0c;我们将探…

使用wxPython和pandas模块生成Excel文件

介绍&#xff1a; 在Python编程中&#xff0c;有时我们需要根据特定的数据生成Excel文件。本文将介绍如何使用wxPython和pandas模块来实现这个目标。我们将创建一个简单的GUI应用程序&#xff0c;允许用户选择输出文件夹和输入的Excel文件&#xff0c;并根据Excel文件中每个单…

图像处理技术与应用(四)

图像处理技术与应用入门 颜色空间及其转换 颜色空间是一种用于在数字图像中表达和指定颜色的方法。不同的颜色空间使用不同的方式来定义颜色&#xff0c;每种方式都有其特定的用途和优势。以下是一些常见的颜色空间及其特点&#xff1a; RGB&#xff08;红绿蓝&#xff09;&a…

每日一题(PTAL2):列车调度--贪心+二分

选择去维护一个最小区间 代码1&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int num;vector <int> v;int res0;for(int i0;i<n;i){cin>>num;int locv.size();int left0;int rightv.size()-1;while(left<…

AIGC技术带给我们什么?基于AIGC原理及其技术更迭的思考

AIGC技术带给我们什么&#xff1f;基于AIGC原理以及技术更迭的思考 前言 AI&#xff0c;这个词在如今人们的视野中出现频率几乎超过了所有一切其他的事物&#xff0c;更有意思的是&#xff0c;出现频率仅次于这个词的&#xff0c;几乎都会加上一个修饰亦或是前缀——AI&#…

快速排序找出第K大的元素

有序数组里第 K 大的元素就是index 为 array.length - k 的元素。 快速排序的思路主要就是选一个基准值p&#xff0c;然后将小于p的值放在p的左右&#xff0c;大于p的值放在p的右边&#xff0c;然后对左右数组进行递归。 利用这个思路&#xff0c;当我们找到这个基准值对应的 i…

【教学类-50-14】20240505“数一数”图片样式12:数一数(12个“人物”图案)

作品展示 背景需求&#xff1a; 前文做了“”材料”图片的数一数学具&#xff0c;效果不错&#xff0c; https://blog.csdn.net/reasonsummer/article/details/138466325https://blog.csdn.net/reasonsummer/article/details/138466325 为了让图案内容更丰富&#xff0c;我又…

Python Dash库:一个Web应用只需几行代码

大家好&#xff0c;在数据科学领域&#xff0c;数据可视化是将数据以图形化形式展示出来&#xff0c;帮助我们更直观地理解数据。Python中有一个非常流行的数据可视化库叫做Dash&#xff0c;Dash以其简洁、高效和强大的功能而闻名&#xff0c;它允许开发者快速构建交互式Web应用…

【智能算法】人类进化优化算法(HEOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;J Lian受到人类进化启发&#xff0c;提出了人类进化优化算法&#xff08;Human Evolutionary Optimization Algorithm, HEOA&#xff09;。 2.算法原理 2.1算法思想 …

JavaWEB 框架安全:Spring 漏洞序列.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型&#xff0c;可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入&#xff08;Dependency Injection&#xff09;、面向切面编程&#xff08;Aspect-Or…

Springboot项目学习之各组件的用法和逻辑结构

1.Controller层&#xff08;Controller&#xff09;&#xff1a; 也称为前端控制器或请求处理器&#xff0c;它是项目与用户交互的入口。Controller接收HTTP请求&#xff0c;解析请求参数&#xff0c;调用Service层处理业务逻辑&#xff0c;并返回响应给客户端。 Controller通…

IP证书能免费申请吗

IP SSL证书是一种数字证书&#xff0c;用于保护网络服务器和网络浏览器之间的通信。该证书是一种主要保护公网IP地址的专属信任SSL证书。 IP类型的SSL证书对于直接用IP地址传输数据的技术人员来说&#xff0c;十分重要&#xff01;无论是防洪还是防劫持还是数据加密都起到了关…

【C 数据结构-动态内存管理】4. 无用单元收集(垃圾回收机制)

文章目录 【 1. 问题描述与解决方法 】【 2. 中断回收机制 】 【 1. 问题描述与解决方法 】 问题描述 动态存储管理的运行机制可以概括为&#xff1a;当用户发出申请空间的请求后&#xff0c;系统向用户分配内存&#xff1b;用户运行结束释放存储空间后&#xff0c;系统回收内…

【FL常用插件#1】Ozone11臭氧的安装和使用

本文内容收集自互联网&#xff0c;仅供个人学习参考使用&#xff0c;不允许用于商业用途&#xff0c;造成的侵权行为与本文作者无关 安装 VST2、VST3、AAX和NKS是音频技术界常见的几种插件格式&#xff0c;它们在功能和兼容性上有所不同&#xff1a; VST2 (Virtual Studio Tec…

用户管理中心——数据库设计用户注册逻辑设计

用户管理中心——数据库设计&用户注册逻辑设计 规整项目目录1. 数据库自动生成器的使用实现基本的数据库操作&#xff08;操作user表&#xff09; 2. 注册逻辑的设计(1) 写注册逻辑(2) 实现(3) 测试代码 3. 遇到的问题 规整项目目录 utils–存放工具类&#xff0c;比如加密…

关系型数据库MySQL开发要点之多表设计案例详解代码实现

什么是多表设计 项目开发中 在进行数据库表结构设计时 根据数据模型和业务关系 会根据业务需求和业务模块之间的关系分析设计表结构 由于业务之间互相关联 所以表结构之间也存在着各种联系 主要分为以下三种 一对多 每个部门下是有多个员工的 但是一个员工只能归属一个部…

京东JD商品详情API返回值揭秘:精准掌握商品信息

在当今电子商务繁荣的时代&#xff0c;对于电商平台来说&#xff0c;提供准确、详尽的商品信息对于满足用户需求、提升购物体验至关重要。京东作为中国领先的电商平台&#xff0c;通过其开放的API接口&#xff0c;为开发者提供了获取商品详情的强大工具。本文将深入探讨京东JD商…

FastDFS-单机扩容

描述 周一上班收到用户反馈系统异常&#xff0c;紧急排查日志发现报错&#xff1a;FdfsServerException:错误:28&#xff0c;错误信息:没有足够的存储空间。 解决 根据异常信息判断是文件服务器可用内存不够了&#xff0c;首先登录文件服务器&#xff0c;使用df -h命令查看一…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术

采用全流程模式将地下水数值模拟软件GMS的操作进行详细剖析和案例联系。不仅使学员掌握地下水数值模拟软件GMS的全过程实际操作技术的基本技能&#xff0c;而且可以深刻理解模拟过程中的关键环节&#xff0c;以解决实际问题能力。同时为满足环评从业人员进一步加强地下水数值模…

AF594-标记羊抗鼠免疫球蛋白(H+L),山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上,然后再偶联以小化交叉反应性

试剂介绍&#xff1a; AF594-标记羊抗鼠免疫球蛋白(HL)是荧光标记二抗&#xff0c;我们的山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上&#xff0c;然后再偶联以小化交叉反应性。 这种AF594标记的山羊抗小鼠IgG缀合物通过交叉吸附的山羊抗小鼠IgG全抗体与AF594 NHS酯…