在Java中生成通过2D数组的所有路径/路由

时间:2014-09-24 06:41:03

标签: java multidimensional-array

我在Java工作。给定矩阵NxM,我需要找到通过数组的所有可能路径。只允许沿对角线上下移动,或向右移动。示例4x4矩阵:

3  5  7  9
2  4  6  8
9  3  7  5
6  8  2  4

矩阵中的数字可以是任意值。我想通过矩阵生成所有可能的路径,从第一列中的四个数字之一开始。它只允许移动东北,东和东南。示例路线:

3-5 7 9
   \
2 4 6-8
9 3 7 5
6 8 2 4

所以所有路线都包含M个数字。我使用2D数组来保存这个NxM矩阵。更多可能的路径是:

3 4 6 5
3 5 6 9
9 4 7 4
9 3 6 9

有没有办法在Java中轻松生成所有路径?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

也许您可以使用三种方法来执行此操作并递归调用它们。

  1. goNortEast();如果N> 0,则搜索索引[N-1] [M + 1]的元素,否则当前元素将不存在元素NOrtEast,如果元素存在,这也将导致新路径。

  2. goEast();每个元素都可以通过索引[N] [M + 1];

  3. 进入东方
  4. goSouthEast();如果元素存在,搜索索引[N + 1] [M + 1]处的元素,这也将导致新路径,

  5. 从每个元素调用这三个方法,从[0] [0]开始,然后[1] [0],依此类推。

    对于[0] [0],它将调用goNorthEast [] - 将不满足条件goEast(); - index [0] [1]和goSouthEast(); index [1] [1]现在调用这三个元素的相同方法。

    最后,您将从您开始的元素中获取所有可能的路径。