贪心算法之猴子吃香蕉(Monkeys and Bananas)

  这道题是比较简单的贪心算法的题,首先我们来看题目:

问题描述

**Problem Description**
Given an array of size n that has the following specifications:
Each element in the array contains either a monkey or a banana.
Each monkey can eat only one banana.
A monkey cannot eat a banana which is more than K units away from the monkey.
We need to find the maximum number of bananas that can be eaten by monkeys.

输入

**Input**
Two lines.
The first line contains an array of size n contain chars 'B' (represent Banana) or 'M' (represent Monkey). n >= 0.
The second line contains a integer K, K >= 0.

输出

**Output**
An integer, the maximum number of bananas can be eaten by monkeys

解题思路

  因为题目要求了一个香蕉最多只能让一个猴子吃,一个猴子也最多吃一个香蕉,因此我们采用投票法的思想,即一个猴子如果吃到了香蕉,我们就把猴子由"M"变成"A",也就是这个猴子吃完一个香蕉之后就再也不能吃香蕉了。
  具体的做法是首先遍历整个MB数组,如果这个数组元素是"B",则以这个"B"为圆心,以k为半径,1为步长,搜索"M",如果这个范围内找到"M",则把这个"M"变成"A",跳出循环体,进行下一个循环。

C++源代码

/*date:2019年11月28日Author: Chauncy_xu*/
#include<string>
using namespace std;
int main()
{string MB;int k,sum=0,l;cin>>MB;cin>>k;l=MB.length();for(int i=0;i<l;i++){if(MB[i]=='B'){for(int j=-k;j<=k;j++){if((i+j>=0)&&(i+j<=l)&&(MB[i+j]=='M')){MB[i+j]='A';sum+=1;break;}}}}cout<<sum;return 0;
}

不足之处,多多指教。

贪心算法之猴子吃香蕉(Monkeys and Bananas)相关推荐

  1. 猴子吃桃问题 php,趣味算法:猴子吃桃问题

    简明现代魔法 -> C/C++ -> 趣味算法:猴子吃桃问题 趣味算法:猴子吃桃问题 2010-05-26 猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下 ...

  2. 牛客14392 猴子吃香蕉

    链接:https://ac.nowcoder.com/acm/problem/14392 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 65536K,其他语言13107 ...

  3. 猴子吃香蕉过河问题分析与扩展

    第一次接触这个题目是大学找工作时候的一次笔试,题干意思是说有一座桥长50m,桥的一端放着一堆香蕉总共100根,还有一只猴子,这只猴子想要过桥,但是每走1m就要吃一根香蕉(每移动1m要吃一根香蕉,否则饿 ...

  4. java猴子吃香蕉_Java 猴子分香蕉

    Java 蓝桥杯第九届省赛C组第二题<猴子分香蕉> 题目描述: 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还 ...

  5. 试题5 算法训练 猴子吃包子

    问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉包,y1个韭菜包,z1个没有 ...

  6. C++经典算法题-猴子吃桃问题

    1. 题目 题目:一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个. 2. 分析 3. 代码示例 /* 猴子吃桃问题 */main(){i ...

  7. 蓝桥杯试题 算法训练 猴子吃包子C语言

    问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉包,y1个韭菜包,z1个没有 ...

  8. 猴子搬香蕉Java实现_趣味算法:猴子搬香蕉问题

    在博客园一篇文章末尾看到一个有趣的数学问题,据说是小学4年级的题目,摘引如下: 一只小猴摘了300个香蕉,需要搬回家,每次最多搬100个.小猴离家100米,它每走1米,都需要吃掉1个香蕉来补充能量,请 ...

  9. 12行代码AC——试题 算法训练 猴子吃包子——解题报告

    励志用尽量少的代码做高效的表达. 注意点: 挨个算吃包子的时间势必会因为省略小数的问题导致结果不准确. 因此,对于本题:我的核心思路是:分数代替小数,使用除法+取余的方式化简分数,进而解题. 代码: ...

  10. 【C练习之“猴子吃香蕉”】

    问题描述 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉. 第2只猴子醒来,重 ...

最新文章

  1. java user.dir 设置_使用java系统属性user.dir读取配置文件
  2. ASP.NET应用程序与页面生命周期
  3. 直方图和直条图_绘图专题 | 条形图/直方图傻傻分不清楚
  4. C#抓取网页程序的实现浅析
  5. Navicat通过SSH连接远程服务器数据库
  6. 微软面试题:正则表达式提取链接地址
  7. test.php创建,基于phpstudy简单快速搭建一个php程序
  8. 「工具」PWA Manifest图标及 favicon.ico 生成工具
  9. 解决Ubuntu18.04 No wifi adapter found
  10. css开发语言,盘点5大主流CSS框架,你知道哪些
  11. ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转
  12. stm32死机问题的处理
  13. lm曲线公式推导_LM曲线
  14. 区块链钱包开发(Android篇)
  15. R语言做GGEbiplot_基于R语言的GGE双标图在大豆区试中的应用
  16. 苹果销量第一,棉鞋成养生必备?视频号热销商品还有哪些?
  17. SAP MM模块-MIGO收货后自动打印收货单
  18. Oracle 触发器trigger介绍
  19. python怎么放音乐_[宜配屋]听图阁
  20. Spring Boot(9)之 Swagger 接口文档生成器

热门文章

  1. SameTime8.5.1安装失败故障诊断
  2. 游戏运行库microsoft visual c++ 2010 spi 64检测不到
  3. php类 汉子转拼音 通讯录按字母顺序排列
  4. 计算机专业论文周进展300字,论文进展情况记录300字_论文周进展情况记录文库_论文进展情况18篇记录...
  5. 使用pr给视频局部打马赛克
  6. 联想微型计算机安装Win7,联想c340如何安装win7_联想c430一体机改win7系统步骤
  7. Python 高级:人工智能概述
  8. 开天辟地--达特茅斯会议
  9. u盘坏了在计算机不显示,U盘在电脑上不能显示怎么办
  10. error: <class ‘xmlrpclib.Fault‘>, <Fault 92: “CANT_REREAD: The directory named as part of the path /