给植物浇水

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 结语

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

实习编辑:衡辉

稿件来源:深度学习与文旅应用实验室(DLETA)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法与编程之美

欢迎关注『算法与编程之美』

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值