Python中的支柱跳线

时间:2019-02-20 15:16:38

标签: python arrays

我被困在任务上几天了。而且我什至无法开始编码,因为我什至不完全了解任务。因此,如果有人可以帮助我并指出正确的方向,我将不胜感激!

Image of text of the exercise,图像显示为:

  

Josefine和她的朋友发明了一款名为Pillar Jumpers的新游戏。在此游戏中,N个非递减高度的柱子彼此相邻放置。玩家从第一个支柱开始,目标是在最多J个跳跃中到达最后一个支柱。

     

玩家具有一定的跳跃力量S,该力量决定了他可以跳跃多远。令hi为i∈[1…N]的第i个支柱的高度   如果i ,则玩家可以从支柱i跳到j      

考虑到支柱的高度和最大跳跃数J,确定所需的最小跳跃强度S,以便玩家仍然可以完成游戏。

     

输入格式:

Line 1: The integers N and J  
Line 2: The heights of the N pillars in a list
     

输出格式

Line 1: The minimum required strength S.

所以我的第一种方法是尝试考虑由不同高度的差异组成的数组,但是它不起作用:/

然后我尝试将原始高度列表分成J个子列表,然后计算每个子列表的第一个值与最后一个值之间的差,然后返回最小的一个,但它都不起作用:/

2 个答案:

答案 0 :(得分:1)

我不确定您要解决的问题的哪一部分,但从本质上讲,该问题限制了玩家可以以相同的 S 跳多远和多高。我想到的第一件事是一个大概的解决方案。从某个较大的 S 值开始,您可以使用循环“模拟”问题,该循环找到满足跳跃极限的最远支柱j,转到该支柱,然后重复该循环。到达终点后,您将发现该特定 S 值所需的最小跳跃。该值可能小于给定输入 J ,因此您将以较小的跳跃强度 S 重复仿真,直到所需的最小跳跃达到 J 。此时,您的S应该非常接近正确的值。

答案 1 :(得分:0)

由于这是一项作业,因此我不会发布任何代码,但是由于您已经停留了几天,所以我将为您提供更多提示:

  1. 可以简化数组,以便更轻松地使用它吗?如何计算连续支柱之间的高度差。您在帖子中说您已经尝试过了,这是个好主意!
  2. 一旦有了挑战,您如何知道在给定的力量下挑战是不可能的,这意味着什么?除非被卡住,否则请不要吼叫。
  

将其视为楼梯,步伐是如此之大,以至于我没有力量攀登它。
台阶的台阶比我的力量大吗?

  1. 现在我们知道有可能,我们必须循环...多少循环?为什么呢我们包括哪些变量?我们要跟踪什么?
  

我们必须爬楼梯的所有台阶,这是一个循环...
我们必须跟踪我正在走的台阶,这样我们才能知道自己在哪里。
我们必须跟踪我要爬到当前步的跳数。

  1. 如何跳跃?我们每跳跳过多少支柱?规则是什么,跳意味着什么?
  

在我跳跃时,如果NUMBER_OF_STEPS < STRENGTH AND SUM(STEPS) < STRENGTH,我应该转到下一个支柱。其中NUMBER_OF_STEPS是此跳转中的步数,SUM(STEPS)是我们离开的步与当前步之间的高度差。对 ?那是在您的作业中给出的,我只是改写了一下。

  1. 现在我们知道在给定的力量下需要进行多少跳跃。我们可以尝试不同的优势并回答问题。