如何尝试遍历整数数组的所有可能方式

时间:2016-10-20 00:25:57

标签: java arraylist static-methods

我是编程方面的新手,我想为一项任务提供一些帮助,我只需要一点线索来帮助我入门(没有答案,我只想知道如何做到这一点,然后工作我的方式)。

游戏规则:在初始方格上是一个标记,可以移动到该行的其他方格。在游戏的每个步骤中,您可以将标记移动到当前占据的方格中的整数所指示的方块数。标记可以沿着行向左或向右移动但可以不移动经过任一端。 游戏的目标是将标记移动到洞穴,行的远端为“0”。在此配置中,您可以通过以下一组移动来解决游戏:

例如:2 3 1 2 4 0

首先:移动2(向右移动,因为它不可能向左移动)然后:向右移动1或向左移动1然后:如果我们向左移动:向右移动3(不能移动)如果我们在此之前向前移动,那么它就是左边的2或者右边的2。右边的2是正确的答案,从那时起,下一个值是0。

我必须编写将尝试所有可能性的程序(所以使用循环或递归我猜?)如果有解决方案则返回TRUE,如果没有解决方案则返回FALSE。我不得不从教授给出的一些数据结构中选择这个分配,并决定使用基于数组的列表,因为get()是O(1),它主要是创建arraylist后使用的唯一方法。

我的程序只缺少(静态?)方法,它将评估是否可能,我不需要其他任务的帮助。 假设已经给出了ArrayBasedList。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为你使用递归方法的想法很有意义。我感谢你不想要完整的答案,所以这应该只是给你一个想法:

  1. 创建一个返回布尔值的方法(传入当前位置和列表的整数x)。
  2. 在方法中,检查list.get(x)的值。
    1. 如果它为0,则返回true。
    2. 如果它为-1,则返回false(稍后会详细介绍)。
  3. 否则,将值存储在变量n中,将其替换为-1,然后返回method(x+n) || method(x-n)
  4. -1做的是它最终用一个将终止程序的值填充数组中的所有内容。否则,你最终会得到一个无限循环(就像你传入[1, 2, 4, 2, 3])一样,来回传递值。

    要记住以下几点:

    1. 您每次都需要制作一个新的数组副本,因此不要覆盖原始数组。
    2. 您需要合并try-catch(或等效逻辑),以确保您不会尝试超出范围。
    3. 如果您有任何其他问题,请随时提出!

相关问题