当前位置: 首页 > 编程日记 > 正文

贪心算法之最优装载

贪心算法通过一系列的选择来得到问题的解。它所做的每一个选择都是当前状态下局部最好选择。从许多的贪心算法求解的问题可以看到可用贪心算法求解的问题一般具有两个重要的性质:贪心选择性质和最优子结构性质。

1、贪心选择性质

贪心选择性质是 指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。与动态规划算法的不同之处是贪心算法只依赖在当前状态下做出最优选择,然后再去解做出这个选择后产生的相应的子问题。贪心算法依赖于以往做出的选择,但是绝不依赖未来做出的选择。所以贪心算法是自顶向下解决问题的。

2、最优子结构性质

当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。一个问题是否具有最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。

下面是贪算法的最简单的一个实例,最优装载问题:

问题描述:

有一批集装箱要装上一艘载重量为c的货船。其中集装箱i的重量为n[i],问在不受体积限制的情况下,将尽可能多的集装箱装上船?

贪心算法之最优装载算法:
1、选择重量小的先装,所以首先需要排序。
2、不断装载,则是循环,要输出最优装载方案,则是需要进行记录装载
到的位置的。使用loading记录现在的装载量

void Load(int data[],int n,int c)		//最优装载函数
{int pos=0,i=0;int loading=0;InsertSort(data,n);	//排序while(loading<c&&i<n)	//如果总和还是小于c,i就有可能持续增大越界,这里需要加上条件限制{loading+=data[i];i++;}pos=--i;		//循环内部i在loading不满足小于c时还加了1,这里减掉cout<<"最优装载方案为:"<<endl;for(int j=0;j<=pos;j++)cout<<":"<<data[j]<<"-->"<<endl;cout<<"最多可以装载的集装箱数:"<<pos<<endl;}

该问题的时间复杂度取决于排序函数的时间复杂度,这里采用的直接插入排序,所以时间复杂度为O(n^2)

转载于:https://www.cnblogs.com/fistao/archive/2013/04/04/2999794.html

相关文章:

百度认为什么样的网站更有抓取和收录价值

百度认为什么样的网站更有抓取和收录价值 百度认为什么样的网站更有抓取和收录价值呢?我们从下面几个方面简单介绍.鉴于技术保密以及网站运营的差异等其他原因&#xff0c;以下内容仅供站长参考&#xff0c;具体的收录策略包括但不仅限于所述内容。 第一方面&#xff1a;网站创…

【组队学习】【29期】2. 计算机视觉

2. 计算机视觉 航路开辟者&#xff1a;王程伟、任乔牧、张强、李芝翔领航员&#xff1a;杜蕊航海士&#xff1a;王程伟、任乔牧、张强、李芝翔 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-cv/tree/master/ImageProcessingFundamentals内…

python 列表维度_如何输出python中list的维度

python中输出list的维度可以使用numpy来实现:import numpy as np a = [[1,2],[3,4]] print(np.array(a).shape) 扩展: reshape&resize&shape改变数组维度 reshape函数:不改变原数组维度,有返回值 resize函数:直接改变原数组维度,无返回值 shape属性:直接改变原数…

SWFTools PDF转换为SWF

前言 在iText 制作PDF这篇博文中只是简单的介绍了如何制作PDF&#xff0c;为了能让PDF在Web页面中显示&#xff0c;我还需要通过SWFTools工具将PDF文件转换为SWF文件&#xff0c;然后通过SWF文件显示在Web网页中&#xff0c;本次主要是实践SWFTools工具的简单使用&#xff0c;可…

Springboot 中 Mybatis 的使用

2019独角兽企业重金招聘Python工程师标准>>> 官方文档&#xff1a; Mybatis开发团队为Spring Boot 提供了 MyBatis-Spring-Boot-Starter 方便使用。 要使用MyBatis-Spring-Boot-Starter模块&#xff0c;只需要在类路径中包含 mybatis-spring-boot-autoconfigure.ja…

【组队学习】【29期】3. 自然语言处理之情感分析

3. 自然语言处理之情感分析 航路开辟者&#xff1a;芙蕖、戴治旭、陈海顺领航员&#xff1a;初晓宇航海士&#xff1a;芙蕖、戴治旭、陈海顺、汪超 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-nlp/tree/master/Emotional_Analysis内容属…

cvpr 深度估计_无监督单目视频深度估计中的uncertainty方法(CVPR#x27;20)

Contribution对11种使用uncertainty方法的全面评估深度挖掘uncertainty对depth estimation起到的作用提出一个新颖的self-teaching方法去model uncertainty文中使用的uncertainty estimation分为两个类别&#xff1a;empirical uncertainty estimation和predictive uncertainty…

python之CSV文件格式

1、csv文件是以一些以逗号分隔的值 import csv filename "wenjian.csv" with open(filename) as f:reader csv.reader()header next(reader)for index,column in enumerate(header):#enumerate函数获取每个元素的索引及其值print(index,column) 转载于:https://ww…

最受欢迎的ASP.NET的CMS下载

http://www.csdn.net/article/2011-11-28/308172 转载于:https://www.cnblogs.com/xuddong/archive/2013/04/08/3071733.html

【组队学习】【29期】4. 吃瓜教程——西瓜书+南瓜书

4. 吃瓜教程——西瓜书南瓜书 航路开辟者&#xff1a;谢文睿、秦州领航员&#xff1a;刘琳航海士&#xff1a;谢文睿、秦州 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/pumpkin-bookB 站视频&#xff1a;https://www.bilibili.com/video/BV1Mh411e7VU…

editor修改样式 vue_vue+element-ui项目搭建实战

1.使用vue ui创建vue工程利用vue-cli提供的图形化工具快速搭建vue工程&#xff1a;命令行运行&#xff1a;vue ui工程结构说明build&#xff1a;项目构建webpack(打包器)相关代码config&#xff1a;配置目录&#xff0c;包括端口号等node_modules&#xff1a;npm加载的项目依赖…

【IT笔试面试题整理】不用加减乘除做加法

【试题描述】写一个函数&#xff0c;求两个整数的和&#xff0c;要求在函数体内不得使用加减乘除四则运算符合。 基本思路是这样的&#xff1a; int A, B;A&B //看哪几位有进位A^B //不带进位加 考虑二进制加法的过程&#xff0c; 步骤一、A^B&#xff0c;能够得到没有…

修改centos7的网卡名

1. 使用命令修改网卡名 cd /etc/sysconfig/network-scripts/ mv ifcfg-ens33 ifcfg-eth0 mv ifcfg-ens34 ifcfg-eth1 2. 修改网卡内容 cat > ifcfg-eth0<<END TYPEEthernet BOOTPROTOnone DEFROUTEyes IPV4_FAILURE_FATALno NAMEeth0 DEVICEeth0 ONBOOTyes IPADDR1…

【组队学习】【29期】5. 李宏毅机器学习(含深度学习)

5. 李宏毅机器学习&#xff08;含深度学习&#xff09; 航路开辟者&#xff1a;王茂霖、陈安东&#xff0c;刘峥嵘&#xff0c;李玲领航员&#xff1a;王洲烽航海士&#xff1a;王茂霖 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/leeml-notes开源内容…

eslint 换行_javascript – 预期的换行符为“LF”,但在Eslint中使用gulp找到“CRLF”换行符...

当在gulp项目中使用eslint时,我遇到了像这样的错误的问题.预期的linebreaks为’LF’,但是发现’CRLF’linebreak-style,我正在使用Windows环境运行gulp,并且下面给出了整个错误日志Kiran (master *) Lesson 4 $gulp:17:08] Using gulpfile c:\Users\Sai\Desktop\web-build-tool…

【组队学习】【29期】6. 动手学数据分析

6. 动手学数据分析 航路开辟者&#xff1a;陈安东、金娟娟、杨佳达、老表、李玲、张文涛、高立业领航员&#xff1a;李婉桦航海士&#xff1a;陈安东、叶前坤、18&#xff1a;46、吴卓辰、livid 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/hands-on-d…

编码风格 - 函数

每个函数都应该设计得尽可能简单&#xff0c;简单的函数才容易维护。应遵循以下原则&#xff1a; 实现一个函数只是为了做好一件事情&#xff0c;不要把函数设计成用途广泛、面面俱到的&#xff0c;这样的函数肯定会超长&#xff0c;而且往往不可重用&#xff0c;维护困难。 函…

利用Oracle GoldenGate记录源系统所有表的操作

通过goldengate&#xff0c;可以实现目标表和源表不同结构之间的实时复制&#xff0c;包括记录源系统所有表的变更操作&#xff0c;供ETL或其它审计系统使用。 记录信息包括表名、操作时间、操作SCN&#xff0c;事务标记&#xff0c;操作类型到一个流水表。用于后续ETL处理过程…

dis的前缀单词有哪些_玩转英语词汇--词汇积累策略之前缀dis

拇指英语说&#xff0c;分享英语学习心得&#xff0c;技巧和方法。让英语学习变得更有趣&#xff0c;更简单。在英语学习中&#xff0c;词汇量的大小是衡量英语水平的重要标志。通常词汇量越大&#xff0c;运用英语的能力就越强&#xff0c;反之亦然。许多英语偏弱的学生将词汇…

Centos7.x系统配置上的变化【转】

安装CentOS 7后&#xff0c;一开始有点儿无力吐槽的感觉&#xff0c;变化这么大&#xff1f; 一&#xff1a;Runlevel 二&#xff1a;Services 三&#xff1a;网络 四&#xff1a;ip ss指令替代 ifconfig route arp netstat 五&#xff1a;nmtui配置基本网络连接 六&#xff1a…

C++自动生成的成员函数

每个类都有构造函数和析构函数。如果程序员没有编写这些成员函数&#xff0c;C将自动生成他们。 1、class::class() 默认的构造函数。 如果没有定义其它的构造函数就会自动生成。生成的代码使用随机值填充类的数据成员。 当类的变量不带参数时就会被自动调用&#xff0c;如&…

【组队学习】【29期】7. 集成学习(上)

7. 集成学习&#xff08;上&#xff09; 航路开辟者&#xff1a;李祖贤、薛传雨、六一、杨毅远、陈琰钰领航员&#xff1a;刘思含航海士&#xff1a;李祖贤 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/ensemble-learning开源内容&#xff1a;https://…

shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?

每个 Linux 管理员都可能听到过 shell 这个词。你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗&#xff1f; Linux 中有多少个 shell 可用&#xff1f;-- Magesh Maruthamuthu每个 Linux 管理员都可能听到过 shell 这个词。你知道什么是 shell 吗? 你知道 s…

Android APK加壳技术方案----代码实现

本文章由Jack_Jia编写&#xff0c;转载请注明出处。 文章链接&#xff1a;http://blog.csdn.net/jiazhijun/article/details/8746917 作者&#xff1a;Jack_Jia 邮箱&#xff1a; 309zhijun163.com 一、序言 在上篇“Android APK加壳技术方案”&#xff08;http://blog.cs…

【组队学习】【29期】9. 基于transformers的自然语言处理(NLP)入门

9. 基于transformers的自然语言处理(NLP)入门 航路开辟者&#xff1a;多多、erenup、张帆、张贤、李泺秋、蔡杰、hlzhang领航员&#xff1a;张红旭、袁一涵航海士&#xff1a;多多、张红旭、袁一涵、童鸣 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/L…

golang xml和json的解析与生成

golang中解析xml时我们通常会创建与之对应的结构体&#xff0c;一层层嵌套&#xff0c;完成复杂的xml解析。 package main;import ("encoding/xml""fmt" )//我们通过定义一个结构体&#xff0c;来解析xml //注意&#xff0c;结构体中的字段必须是可导出的 …

mongodb 索引去重_朋友问你 MongoDB 是什么?给他看这篇就好了

点击▲关注 “ITPUB” 给公众号标星置顶更多精彩 第一时间直达来源&#xff1a;hello_锦泰blog.csdn.net/hayre/article/details/80628431总结的目的在于回顾MongoDB的相关知识点&#xff0c;明确MongoDB在企业级应用中充当的角色&#xff0c;为之后的技术选型提供一个可查阅…

Win32 API消息函数:GetMessagePos

函数功能&#xff1a;该函数返回表示屏幕坐标下光标位置的长整数值。此位置表示当上一消息由GetMessage取得时鼠标占用的点。 函数原型&#xff1a;DWORD GetMessagePos&#xff08;VOID&#xff09; 参数&#xff1a;无。 返回值&#xff1a;返回值给出光标位置的X&a…

【组队学习】【29期】11. 青少年编程(Scratch 二级)

11. 青少年编程&#xff08;Scratch 二级&#xff09; 航路开辟者&#xff1a;王思齐、马燕鹏领航员&#xff1a;马燕鹏航海士&#xff1a;王思齐、马燕鹏 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-program/tree/master/Scratch内容属…

TP基础问题第一天

1、入口文件中定义的内容&#xff0c;说出3点 1. 检测PHP环境 if(version_compare(PHP_VERSION,5.3.0,<)) die(require PHP > 5.3.0 !); 2. 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define(APP_DEBUG,True); 3. 定义应用目录 define(APP_P…