如何在Java递归PuzzleSolver中计算所有解决方案?

时间:2019-11-19 01:49:39

标签: arrays recursion data-structures backtracking

所以我正在用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。这意味着我现在编写的代码只能找到一个解决方案,并且当我们按最后索引。我该如何做才能找到所有解决方案?

0 个答案:

没有答案