给植物浇水

简介: 给植物浇水

1 问题

你打算用一个水罐给花园里的n株植物浇水。植物排成一行,从左到右进行标记,编号从0到n-1,其中,第i株植物的位置是x=i.x=-1处有一条河,你可以在那里重新灌满你的水罐。

每一株植物都需要浇特定量的水。按下面描述的方式完成浇水:

  • 按从左到右的顺序给植物浇水
  • 在给当前植物浇完水之后,如果你没有足够的水完全浇灌下一株植物,那么你就需要返回河边重新装满水罐
  • 你不能提前重新灌满水罐

最初,你在河边(也就是x=-1),在x轴上每移动个单位都需要一步给你一个下标从0开始的整数数组plants,数组由n个整数组成.其中plants[i]为第i株植物需要的水量。另有一个整数capacity表示水罐的容量,返回浇灌所有植物需要的步数。

2 方法

我们用一个变量a来接收给plants[i]浇水后剩余的水量,再用一个变量distance来计算步数.

如果a>=plants[i+1],则可以继续给下一株植物浇水,从i到i+1需要的步数就是1,紧接着就先判断剩余的水能否够继续给下一株植物浇水.

如果a<plants[i+1],则需要从plants[i]处返回河边x=-1位置处灌满水,需要的步数是i-(-1)=i+1步,从x=-1来到plant[i+1]位置处浇水,需要的步数为(i+1)-(-1)=i+2步.当最后一株植物浇水完成后,直接返回distance的值.

3 实验结果与讨论

通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。

代码清单 1

plants = [2, 2, 3, 3]
cap = 5
a = cap
distance = 0
for i in range(len(plants) - 1):
   if plants[i] <= a:
       a = a - plants[i]
       if plants[i + 1] <= a:  
           continue        
   distance = (i + 1) * 2 + distance
   a = cap
print(distance + len(plants))

4 结语

针对给植物浇水返回步数问题,提出利用浇水后剩余水量和下一株植物需水量作比较,判断出是否可以继续浇水,从而计算出所需的步数的方法,通过一步一步的计算和简单的例子,以及最终的运行结果都可以证明该方法是有效的。

目录
相关文章
|
2月前
|
机器人 数据挖掘 定位技术
植保机器人在植物授粉
植保机器人在植物授粉
24 4
|
9月前
1312:【例3.4】昆虫繁殖
1312:【例3.4】昆虫繁殖
|
机器学习/深度学习 算法 计算机视觉
从视频中获取发丝都能看见的人体步态轮廓图
从视频中获取发丝都能看见的人体步态轮廓图
从视频中获取发丝都能看见的人体步态轮廓图
|
机器学习/深度学习 存储 算法
一种基于改进的YOLOv4-GhostNet水稻病虫害识别方法
针对水稻病害虫害检测精度低、速度慢、模型体量大、部署困难等问题,本研究提出了轻量化YOLOv4-GhostNet水稻病虫害识别方法: 1)利用幻象模块代替普通卷积结构,替换主干特征提取网络CSPDarkNet53,构建GhostNet特征提取结构; 2)改进YOLOv4网络的加强特征提取部分PANet结构; 3)利用迁移学习与YOLOv4网络训练技巧; 4)模型对水稻病虫害检测的平均精确度达到89.91%,检测速度可达每秒34.51 帧,体量缩减为42.45 MB; 5)与YOLOv4网络相比,网络规模减小了93.88%、网络参数缩减为原来的8.05%、训练速度每秒钟提升了11.59 帧。
439 0
|
弹性计算 关系型数据库 MySQL
在知识的海洋里喝水
福建疫情来袭,宿舍上课之际。闲来无事为协会创建一个官网。以便后续纳新等后续各项事宜发布。试运营之后将接入学校官网。
在知识的海洋里喝水