贪心算法之最优装船

贪心算法入门 贪心算法的定义 贪心算法,又称贪婪算法,就是在解决问题的每一步,都在一定的标准下做一个最优决策,做出最优决策所依据的标准称为贪心准则。 贪心算法每一步必须满足以下条件:    1、可行的:即它必须满足问题的约束。 2、局部最优:他是当前步骤中所有可行选择中最佳的局部选择。 3、不可更改:即选择一旦做出,在算法的后面步骤就不可改变了。 注意:贪心算法不考虑整体的最优,只是做出了当前来说最好的选择(无后效性)。 先来个小题来理解一下吧! 删数问题 Description 键盘输入一个高精度的正整数n. 阅读详情

1.问题描述

在一个固定重量的货船中装最大重量的集装箱,忽略空间

如最大重量是15 而我有五个箱子重量分别为 2 4 66 8 60

那么我装入的箱子应该为第1 2 4个

2.算法思路

我现在有两个数组,一个w[5]存储这五个箱子的重量另一个x[5]存储这五个箱子的下标

当我的w[5]安找递增的顺序排列后,我只需要顺序相加小于我的最大重量,然后就可以得到我需要的集装箱数

然后,我们将相应的置换下标,将下表输出就行了

3算法代码

<span style="font-size:18px;">#include<stdio.h>
#include<stdlib.h>
int sort(int w[],int t[],int n){
	int i,j,temp;
	int *a=(int *)malloc(sizeof(int)*n);
	for(i=0;i<n;i++){
		t[i]=i;
	}
	for(i=0;i<n;i++){
		a[i]=w[i];
	}
	for(i=0;i<n-1;i++)			//冒泡法排序 
		for(j=0;j<n-i-1;j++){
			if(a[j]>a[j+1]){
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
				temp=t[j];
				t[j]=t[j+1];
				t[j+1]=temp;
			}
		}
}
int loading(int w[],int x[],int max,int n){
	int i,s=0;
	int *t = (int *)malloc(sizeof(int)*n);
	sort(w,t,n);
	for(int j=0;j<n;j++)
	x[j]=0;
	for(i=0;i<n&&w[t[i]]<=max;i++){//贪心 
		x[t[i]]=1;
		max=max-w[t[i]];
	}
}

main(){
	int w[5],x[5],max;
	printf("请输入货船最大重量");
	scanf("%d",&max);
	printf("请输入五个重量");
	for(int i=0;i<5;i++){
		scanf("%d",&w[i]);
	} 
	loading(w,x,max,5);
	for(int i = 0;i<5;i++){
		if(x[i]==1)
		printf("%d\n",i);
	}
} </span>

贪心算法实例 这里写自定义目录标题 有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为w。最优装题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。 该问题可形式化描述为 其中,变量xi=0表示不装入集装箱i,xi=1表示装入集装箱i。 算法描述 最优装载问题可用贪心算法求解,采用重量最轻者先装的贪心选择策略,可产生最优装载问题的最优解。具体算法描述如下: public static float loading(float c, float [] w,int [] x) { int n=w. 阅读详情

相关推荐

最优装载问题(贪心)

算法特点及适用场景该算法基于贪心策略,通过选择重量最轻的集装箱优先装入的方式,简单直观地解决了最优装载问题,能在船的载重量限制下尽可能多地装载集装箱。适用于各种货物装载场景,例如货车运输不同重量的货物,要在车辆载重允许范围内装载最多的货物;或者仓库存储不同重量的物品,在存储空间有限(可类比载重量)的情况下,放入最多的物品等情况,只要涉及到在容量或重量限制下尽可能多地选择轻量级物品的问题都可以应用该思路。注意事项及可能遇到的问题在代码实现方面,要注意sort_w。

m0_49844997的博客 1651

C语言:最优装载问题

文章目录一、最优装载问题二、解题思路三、代码实现 一、最优装载问题 给定一个最大装载重量为 M 的卡车和 N 种食品,有食盐、白糖、大米等。已知第 i 种食品最多有 Wi 公斤,其商品价值为 Vi 元/公斤,编程确定一个装货方案,使得装入卡车中所有物品总价值最大。 二、解题思路 因为每一个物品都可以分割成单位块,单位块的利益越大显然总收益越大,所以局部最优满足全局最优,可以使用贪心法解答。方法如下: 先将单位块收益从大到小进行排列; 初始化卡车的剩余载重和当前价值; 从前到后考虑所有物品: a. 如果可以

loon_zy的博客 3471

最优装载问题(贪心算法)c++

问题描述 有一批集装箱要装上一艘载重量为c的轮船,其中集装箱i的重量为wi (1≤i≤n) 。 最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。

贪心算法-实验: 最优装载问题

贪心算法-实验: 最优装载问题 一、实验目的 1. 掌握各类数据结构的操作;2. 掌握用c++语言描述与实现算法的方法;3. 理解算法的概念,掌握算法复杂度分析技术;二、实验内容 1. 运用C或C++语言,按要求完成算法实现;2. 对所设计的算法采用大O符号进行时间复杂性分析;三、实验任务 设有重量为(4,6,3,5,7,2,9)的7个集装箱,轮船的载重为26,求能够装载的集装箱的最大 数量?

zyydsnb的博客 1379

C#贪心算法-货箱装船

用C#控制台编写的用贪心算法解决货箱装船问题

贪心算法-最优装载问题

基于贪心算法的最优装在你问题

【算法设计与分析】贪心法(其二) - - - 最优装载问题

贪心法其二 - - - 最优装载问题的问题概述,分析,例题演示,以及关于贪心选择性质、最优子结构性质的算法正确性证明。包含C、C++、Java、Python不同版本的代码实现

weixin_73917991的博客 3572

c语言来实现贪心算法之装箱问题

主要介绍了c语言来实现贪心算法之装箱问题,需要的朋友可以参考下

贪心算法之最优装船问题

看到一题目,初见觉得很简单,但是实际编程的时候,可能是由于自己的基本功太弱的原因吧,还是花费了很长的时间的。有一批集装箱要装入一个载质量为C的货船种,每个集装箱的质量由用户自己输入指定,在货船的装载体积不限的前提下,如何装载集装箱才能尽可能多地的将集装箱装入货船中。//对货物的质量排序,并且用数组h1保存货物的箱子号(下表)//////冒泡排序//////////////////////对数组h1_1[]初始化////////////相邻的数互换///////////将箱子号也移动/////

m0_71272694的博客 453

Unity游戏开发:从零开始适配Nintendo Switch的完整指南

本文详细介绍了如何使用Unity进行Nintendo Switch游戏开发的完整流程,包括开发环境搭建、Unity工程适配、手柄与硬件特性开发、存储与性能优化等关键步骤。特别强调了Switch SDK的配置、输入系统改造和内存优化技巧,帮助开发者高效完成跨平台适配。

vodka的博客 1068

iOS开发者必备:从越狱设备里提取IPA的三种方法(含Filza、iTools实战)

本文详细介绍了iOS开发者从越狱设备提取IPA文件的三种实用方法,包括使用Filza文件管理器、AFC2配合桌面工具以及命令行高级技术。内容涵盖环境准备、操作步骤和技术原理,帮助开发者高效获取应用包文件,适用于逆向工程、测试分析等场景。

weixin_28717969的博客 812

贪心算法(汽车加油问题、多元Huffman编码问题、装船问题、活动选择、最优合并问题、区间覆盖问题)

输入数据的第一行有2 个正整数n和k(n≤5000,k≤1000),表示汽车加满油后可行驶n公里,且旅途中有k个加油站。输入数据的第1 行有2 个正整数n和k(n≤100000,k≤10000),表示有n堆石子,每次至少选2 堆最多选k堆石子合并。输入数据的第一行有2 个正整数n和k(n≤10000,k≤100),表示有n个点,且固定长度闭区间的长度为k。, xn 是实直线上的n 个点。对于给定的实直线上的n个点和闭区间的长度k,设计解此问题的有效算法,计算覆盖点集的最少区间数,并证明算法的正确性。

qq_51774501的博客 1426

【鸿蒙实战开发】HarmonyOS申请调试签名证书过程

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

HarmonyOS_002的博客 3561

贪心算法思想

最优装船问题贪心算法又称为贪婪算法,是指在对问题求解时,总是做出在当前看来是最好的选择。它不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。而局部的最优解叠加到一起便是该问题整体的最优解,或者近似最优解。 (1)贪心选择性 是指所求解的问题的整体最优解可以通过一系列的局部最优解得到。 例:找零钱问题。有三种硬币(1元,5角,1角),现要找客人2元7角,要求找给客人的硬币数量最少。

Li Qing Xin's blog 307

基于AutoDL复现A-LOAM

Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。在autodl上面租服务器,地区我租的重庆A区的,GPU我选择的是RTX4090,基础镜像选择的是Miniconda / conda3 / 3.8(ubuntu20.04)/11.6。在AutoDL中我使用的方式是先将该数据集先下载到自己的电脑上,然后再上传到虚拟机中。用MobaXterm解决该问题!搜到的一个解决方式:该问题属于ceres版本问题,将A-LOAM下的。

m0_61281610的博客 1942

loadStop的原因导致的SSUSP

Total内存值是可用来调度的可用内存,当前可用内存为 0M。 loadSched和loadStop的阈值是根据 Total 内存和节点内存来做限制的。 loadStop 50G,现在有大量作业SSUSP,说明之前某个时间点该节点内存可能有低于50G的时候,导致作业SSUSP,具体是否是这个原因引起的需要用 bjobs -l JobID 看下作业的详细信息。 如果是loadStop的原因导致的 SSUSP,根据loadStop设置的阈值,Total 值高于loadStop值后,将逐步恢复挂起的作业

Blueberry521的博客 666

算法设计与分析--贪心算法

汽车加油问题 Time Limit:1000 msMemory Limit:65536 KiB Problem Description 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。 对于给定的n和k个加油站位置,计算最少加油次数。 Input 输入数据的第一行有2 个正整数n和k(...

Just like myself. 393

别再乱用标签了!深度解析Unity Addressables标签(Labels)的三种高级用法与性能影响

本文深度解析Unity Addressables标签(Labels)的三种高级用法与性能影响,包括标签组合查询、Pack Together by Label打包策略及运行时性能优化。通过实战代码示例和性能数据对比,帮助开发者实现精细化资源加载控制与包体优化,提升项目效率。

weixin_30500105的博客 508

贪心算法实战解析:从集装箱装船到生活决策

本文介绍了贪心算法的核心思想及其在集装箱装载等实际问题中的应用。贪心算法通过每一步选择局部最优解来寻求全局最优解,适用于具有贪心选择性质和最优子结构性质的问题。文章详细解析了集装箱装船问题的贪心解法,并展示了活动安排、分数背包等拓展应用案例。同时指出贪心算法的局限性,如不适用于0-1背包问题,并介绍了验证贪心算法适用性的证明方法。最后强调贪心思维在日常生活中的普遍应用,提醒使用前需验证其适用性。

2501_90890083的博客 956

【openEuler容器镜像部署指南】

【代码】【List集合排序 】

weixin_43878094的博客 1111

maxim max96712+max96717调试笔记

mxxim max96712 和max96717调试笔记

libuping2023的博客 1万+

贪心算法解最优装载问题

贪心算法Q1—— 最优装载问题 package 贪心; import java.util.Arrays; /*问题描述 在北美洲东南部,有一片神秘的海域,那里碧海 蓝天、阳光明媚,这正是传说中海盗最活跃的加勒比海。17 世纪时,这里更是欧洲大陆 的商旅舰队到达美洲的必经之地,所以当时的海盗活 动非常猖獗。有一天,海盗们截获了一艘装满各种各样古董的 货船,每一件古董都价值连城,一旦打碎就失去了它 的...

JohnnyLin 823

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SDUT-OJ 2025-2026第一学期《算法设计与分析》贪心算法实验

山东理工大学OJ《算法分析与设计》实验

ziyu1845553146的博客 1075

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

《趣学算法(第2版)》读书笔记 Part 4 :贪心算法基础(操作)

对应图书2.2章节内容。 通过本节的学习,掌握最简单的贪心算法求解问题方法。

浪里个狼游记 978

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 分治法写划分数
下一篇: thinkphp与ajax传值
反斜杠青年
博客等级 码龄11年 29粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值