贪心算法之猴子吃香蕉(Monkeys and Bananas)
贪心算法之猴子吃香蕉(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)相关推荐
- 猴子吃桃问题 php,趣味算法:猴子吃桃问题
简明现代魔法 -> C/C++ -> 趣味算法:猴子吃桃问题 趣味算法:猴子吃桃问题 2010-05-26 猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下 ...
- 牛客14392 猴子吃香蕉
链接:https://ac.nowcoder.com/acm/problem/14392 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 65536K,其他语言13107 ...
- 猴子吃香蕉过河问题分析与扩展
第一次接触这个题目是大学找工作时候的一次笔试,题干意思是说有一座桥长50m,桥的一端放着一堆香蕉总共100根,还有一只猴子,这只猴子想要过桥,但是每走1m就要吃一根香蕉(每移动1m要吃一根香蕉,否则饿 ...
- java猴子吃香蕉_Java 猴子分香蕉
Java 蓝桥杯第九届省赛C组第二题<猴子分香蕉> 题目描述: 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还 ...
- 试题5 算法训练 猴子吃包子
问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉包,y1个韭菜包,z1个没有 ...
- C++经典算法题-猴子吃桃问题
1. 题目 题目:一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个. 2. 分析 3. 代码示例 /* 猴子吃桃问题 */main(){i ...
- 蓝桥杯试题 算法训练 猴子吃包子C语言
问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉包,y1个韭菜包,z1个没有 ...
- 猴子搬香蕉Java实现_趣味算法:猴子搬香蕉问题
在博客园一篇文章末尾看到一个有趣的数学问题,据说是小学4年级的题目,摘引如下: 一只小猴摘了300个香蕉,需要搬回家,每次最多搬100个.小猴离家100米,它每走1米,都需要吃掉1个香蕉来补充能量,请 ...
- 12行代码AC——试题 算法训练 猴子吃包子——解题报告
励志用尽量少的代码做高效的表达. 注意点: 挨个算吃包子的时间势必会因为省略小数的问题导致结果不准确. 因此,对于本题:我的核心思路是:分数代替小数,使用除法+取余的方式化简分数,进而解题. 代码: ...
- 【C练习之“猴子吃香蕉”】
问题描述 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉. 第2只猴子醒来,重 ...
最新文章
- java user.dir 设置_使用java系统属性user.dir读取配置文件
- ASP.NET应用程序与页面生命周期
- 直方图和直条图_绘图专题 | 条形图/直方图傻傻分不清楚
- C#抓取网页程序的实现浅析
- Navicat通过SSH连接远程服务器数据库
- 微软面试题:正则表达式提取链接地址
- test.php创建,基于phpstudy简单快速搭建一个php程序
- 「工具」PWA Manifest图标及 favicon.ico 生成工具
- 解决Ubuntu18.04 No wifi adapter found
- css开发语言,盘点5大主流CSS框架,你知道哪些
- ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转
- stm32死机问题的处理
- lm曲线公式推导_LM曲线
- 区块链钱包开发(Android篇)
- R语言做GGEbiplot_基于R语言的GGE双标图在大豆区试中的应用
- 苹果销量第一,棉鞋成养生必备?视频号热销商品还有哪些?
- SAP MM模块-MIGO收货后自动打印收货单
- Oracle 触发器trigger介绍
- python怎么放音乐_[宜配屋]听图阁
- Spring Boot(9)之 Swagger 接口文档生成器
热门文章
- SameTime8.5.1安装失败故障诊断
- 游戏运行库microsoft visual c++ 2010 spi 64检测不到
- php类 汉子转拼音 通讯录按字母顺序排列
- 计算机专业论文周进展300字,论文进展情况记录300字_论文周进展情况记录文库_论文进展情况18篇记录...
- 使用pr给视频局部打马赛克
- 联想微型计算机安装Win7,联想c340如何安装win7_联想c430一体机改win7系统步骤
- Python 高级:人工智能概述
- 开天辟地--达特茅斯会议
- u盘坏了在计算机不显示,U盘在电脑上不能显示怎么办
- error: <class ‘xmlrpclib.Fault‘>, <Fault 92: “CANT_REREAD: The directory named as part of the path /