本文索引目录:

一、贪心算法的基本思想以及个人理解

二、汽车加油问题的贪心选择性质

三、一道贪心算法题点拨升华贪心思想

四、结对编程情况

一、贪心算法的基本思想以及个人理解:

  1.1  基本概念:

  首先我们从课本中仔细品读基本的贪心概念,顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。

  因此对于贪心算法来说,这类算法没有固定的模板套路,当局部最优与全局最优解一致性被证明之后,即可使用贪心算法。

  1.2  使用条件:

  (1)需要具有贪心选择性质

  所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。

  动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。

  对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。

  (2)需要具有最优子结构性质

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

  1.3  使用思想:

  贪心算法是从问题的某一个初始值出发并且不断接近所给定的特定目标,以尽可能快的地求得更好的解。当达到算法中的某一步不能再继续前进时,算法停止。但是贪心算法无法保证最后的解是最佳的,并且不能求解最大或最小解问题,只能求解满足某些约束条件的可行解的范围。

  1.4  贪心算法的经典问题种类:

(1)背包问题

(2)活动时间安排的问题

(3)线段覆盖问题

(4)数字组合问题

(5)最大整数问题

(6)均分纸牌问题

(7)找零钱问题

二、汽车加油问题的贪心选择性质:

  PTA7-1 汽车加油问题:寻找汽车满油量时可以行驶的最大路程的最后一个加油站,并且加油后重置当前油量的变量,并且用一个ans标记变量增加次数,并继续用此方法前进,特别需要注意的是需要检查每一小段路程是否超过汽车满油量时的最大支撑路程。

三、一道贪心算法题点拨升华贪心思想:

  2.1  题目来源:

    HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2088

  2.2  题目题干:

  Box of Bricks

·Problem Description:

  Little Bob likes playing with his box of bricks. He puts the bricks one upon another and builds stacks of different height. “Look, I've built a wall!”, he tells his older sister Alice. “Nah, you should make all stacks the same height. Then you would have a real wall.”, she retorts. After a little consideration, Bob sees that she is right. So he sets out to rearrange the bricks, one by one, such that all stacks are the same height afterwards. But since Bob is lazy he wants to do this with the minimum number of bricks moved. Can you help?

·Input

  The input consists of several data sets. Each set begins with a line containing the number n of stacks Bob has built. The next line contains n numbers, the heights hi of the n stacks. You may assume 1≤n≤50 and 1≤hi≤100.
  The total number of bricks will be divisible by the number of stacks. Thus, it is always possible to rearrange the bricks such that all stacks have the same height.
  The input is terminated by a set starting with n = 0. This set should not be processed.
 
·Output
  For each set, print the minimum number of bricks that have to be moved in order to make all the stacks the same height.
  Output a blank line between each set.
 
·Sample Input
  6
  5 2 4 1 7 5
  0
 
·Sample Output
  5

  2.3  题目大意:

    题目意思是:给定一堆积木,并且分成k列,试问如何用最少的移动操作(只能移动到相邻位置),能够将k列堆积木达到平均高度。

  2.4  题目思路:

    本题的贪心性质选择为:计算出总共的砖块数,在求出N堆砖的平均高度(即需要达到的最终高度),把高的堆上的砖移到不足平均高度的堆上。应该计算出所有不足高度的堆上总共差多少砖达到高度,即为结果。

 

  2.5  题目AC代码:

#include<stdio.h>
#include<string.h> int main()
{
int N;
int a[];
int kase = ;
while(scanf("%d",&N) && N)
{
int sum = ;
for(int i = ; i < N; i++)
{
scanf("%d",&a[i]);
sum += a[i];
}
int ans = ;
for(int i = ; i < N; i++)
{
if(a[i] < sum/N)
ans += sum/N - a[i];
}
printf("Set #%d\n",kase++);
printf("The minimum number of moves is %d.\n\n",ans);
} return ;
}

四、 结对编程情况:

  经过前几次实践题合作之后,结对编程逐渐顺利,能够让双方都能不断进行思路碰撞,实现较为合适的算法,当和三木小哥哥想到一起完成了算法设计、完成代码书写、成功AC一题之后,会有较为愉悦的心情感,较为顺利的完成三道题,继续加油,暂无较大问题。

如有不合理的地方,请及时指正,我愿听取改正~

参考链接:https://oi-wiki.org/

『嗨威说』算法设计与分析 - 贪心算法思想小结(HDU 2088 Box of Bricks)的更多相关文章

  1. 『嗨威说』算法设计与分析 - 回溯法思想小结(USACO-cha1-sec1.5 Checker Challenge 八皇后升级版)

    本文索引目录: 一.回溯算法的基本思想以及个人理解 二.“子集和”问题的解空间结构和约束函数 三.一道经典回溯法题点拨升华回溯法思想 四.结对编程情况 一.回溯算法的基本思想以及个人理解: 1.1 基 ...

  2. 『嗨威说』算法设计与分析 - PTA 数字三角形 / 最大子段和 / 编辑距离问题(第三章上机实践报告)

    本文索引目录: 一.PTA实验报告题1 : 数字三角形 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 最大子段和 2.1 实践题目 ...

  3. 『嗨威说』算法设计与分析 - 动态规划思想小结(HDU 4283 You Are the One)

    本文索引目录: 一.动态规划的基本思想 二.数字三角形.最大子段和(PTA)递归方程 三.一道区间动态规划题点拨升华动态规划思想 四.结对编程情况 一.动态规划的基本思想: 1.1 基本概念: 动态规 ...

  4. 『嗨威说』算法设计与分析 - PTA 程序存储问题 / 删数问题 / 最优合并问题(第四章上机实践报告)

    本文索引目录: 一.PTA实验报告题1 : 程序存储问题 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 删数问题 2.1 实践题目 ...

  5. 『嗨威说』算法设计与分析 - STL中Sort函数的实现原理初探

    本文索引目录: 一.对Sort算法实现的个人阅读体会 二.Sort算法使用的三个排序算法的优点介绍 2.1 插入排序的优缺点 2.2 堆排序的优缺点 2.3 快速排序的优缺点 2.4 新的结合排序—— ...

  6. 『嗨威说』常见的C++函数模板整理(一)

    开学两天,身上的职责直接变为两个班班长,三个小组组长,哇这事情估计够我忙活了,想躲都躲不掉啊,看来我还是真招人推荐各种管理职务啊,以后要是有人推荐我当经理啊领导啊该多好哈哈哈哈.记得今天奶奶生日,很开 ...

  7. 【技术文档】《算法设计与分析导论》R.C.T.Lee等·第7章 动态规划

    由于种种原因(看这一章间隔的时间太长,弄不清动态规划.分治.递归是什么关系),导致这章内容看了三遍才基本看懂动态规划是什么.动态规划适合解决可分阶段的组合优化问题,但它又不同于贪心算法,动态规划所解决 ...

  8. 算法设计与分析 - AC 题目 - 第 5 弹(重复第 2 弹)

    PTA-算法设计与分析-AC原题 - 最大子列和问题 (20分) 给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+, ..., Nj },其中 ≤i ...

  9. 算法设计与分析 - AC 题目 - 第 2 弹

    PTA-算法设计与分析-AC原题7-1 最大子列和问题 (20分)给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 ...

随机推荐

  1. 虚拟机桥接模式下将虚拟IP设为静态IP

    一:虚拟机设置桥接模式 1.进入虚拟机设置中将网络适配器设置成桥接模式,如下图 2.编辑--虚拟网络编辑器--选择桥接 3.如上图中桥接模式下的桥接到--将自动改成与本机匹配的虚拟网卡,本机虚拟网卡查 ...

  2. Web安全之变量覆盖漏洞

    通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞.经常导致变量覆盖漏洞场景有:$$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_reques ...

  3. phpstorm中xdebug配置和断点调试

    今天赶紧把这个搞了  运行环境: phpStorm 2018 PHP 5.45 nts VC9 Xdebug 2.4.1 0x01 PHP安装xdebug扩展 自己之前装一直没装起 原来是版本问题 下 ...

  4. java-try,return和finally相遇时的各种情况

    今天碰到了这样一个问题:使用try,return和finally会碰到的各种情况1,try中有return时,执行顺序:2,try和finally中都有return时,执行顺序:3,运算代码在fina ...

  5. 利用git工具将自己的代码文件上传到Github

    GitHub 是一个面向开源及私有软件项目的托管平台,作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及 ...

  6. DES算法与四种加密模式的代码实现(C++语言)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Love_Irelia97/article/ ...

  7. MySQL常用sql语句-----数据表的增删改操作

    常用sql操作如下: 1.查看当前数据库的所有表 show tables; 2.创建表 create table stu(sid int,sname char(20),sage int default ...

  8. OpenvSwitch系列之ovs-vsctl命令使用

    Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl 命令使用 OpenvSwit ...

  9. java23种设计模式(三)单例模式

    原文地址:https://zhuanlan.zhihu.com/p/23713957 一.概述 1.什么是单例模式? 百度百科是这样定义的:单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个 ...

  10. travis-ci + php + casperjs 持续集成

    .travis.yml 文件添加内容: sudo: required language: php php: - 5.5 before_script: - npm install -g casperjs ...