所以我正在用Java编写一个程序来解决数组形式的难题。基本上,您会在命令行参数中获得一组数字。数组始终以0结尾。您从数组的第一个索引开始,然后根据所在索引处的数字值向左或向右移动。目标是在数组末尾达到0。因此,例如,如果为您提供以下数组:
3 6 4 1 3 4 2 5 3 0
所有可能的解决方案将是:
[3R,6,4R,1L,3,4R,2R,5,3L,0]
[3R,6R,4R,1R,3L,4R,2R,5L,3L,0]
[3R,6,4R,1R,3R,4R,2R,5L,3L,0]
(L表示向左走,R表示向右走,没有L或R的人在到达解决方案之前尚未被访问)
我创建了一个递归方法来解决试图首先向右走的难题,但是如果我们当前所处的步数+索引大于长度,那么它将向左走。该方法递归运行,直到达到0,卡住或发现没有解决方案为止。
我的代码的基本情况是当我们所在的索引等于len-1时,这意味着我们已经达到了0。这意味着我现在编写的代码只能找到一个解决方案,并且当我们按最后索引。我该如何做才能找到所有解决方案?