我是编程方面的新手,我想为一项任务提供一些帮助,我只需要一点线索来帮助我入门(没有答案,我只想知道如何做到这一点,然后工作我的方式)。
游戏规则:在初始方格上是一个标记,可以移动到该行的其他方格。在游戏的每个步骤中,您可以将标记移动到当前占据的方格中的整数所指示的方块数。标记可以沿着行向左或向右移动但可以不移动经过任一端。 游戏的目标是将标记移动到洞穴,行的远端为“0”。在此配置中,您可以通过以下一组移动来解决游戏:
例如:2 3 1 2 4 0
首先:移动2(向右移动,因为它不可能向左移动)然后:向右移动1或向左移动1然后:如果我们向左移动:向右移动3(不能移动)如果我们在此之前向前移动,那么它就是左边的2或者右边的2。右边的2是正确的答案,从那时起,下一个值是0。
我必须编写将尝试所有可能性的程序(所以使用循环或递归我猜?)如果有解决方案则返回TRUE,如果没有解决方案则返回FALSE。我不得不从教授给出的一些数据结构中选择这个分配,并决定使用基于数组的列表,因为get()是O(1),它主要是创建arraylist后使用的唯一方法。
我的程序只缺少(静态?)方法,它将评估是否可能,我不需要其他任务的帮助。 假设已经给出了ArrayBasedList。
感谢您的帮助!
答案 0 :(得分:0)
我认为你使用递归方法的想法很有意义。我感谢你不想要完整的答案,所以这应该只是给你一个想法:
x
)。list.get(x)
的值。
n
中,将其替换为-1,然后返回method(x+n) || method(x-n)
。 -1做的是它最终用一个将终止程序的值填充数组中的所有内容。否则,你最终会得到一个无限循环(就像你传入[1, 2, 4, 2, 3]
)一样,来回传递值。
要记住以下几点:
try-catch
(或等效逻辑),以确保您不会尝试超出范围。如果您有任何其他问题,请随时提出!