首页 文章

如何在2D数组中找到所有路径?

提问于
浏览
2

我正在尝试编写javascript,它将映射从root到leaf的所有唯一路径,每个节点都可以连接到下一行的相邻节点 . 例如,根可以连接到下一行,如4,2或4,4 . 叶子的独特路径是4,2,4,2,1

4
            2 4
           6 4 2
          7 4 2 1
         9 4 2 1 4

我能够将三角形转换为像这样结构的2D数组 .

a[0] = [4]
a[1] = [2,4]
a[2] = [6,4,2]
a[3] = [7,4,2,1]
a[4] = [9,4,2,1,4]

我想找到从根到叶的所有路径,例如

4,2,6,7,9
4,2,6,7,4
4,2,6,4,4

我是Depth First Search和广度优先搜索的新手 . 这可以用这些算法实现吗?

1 回答

  • 1

    由于您正在寻找所有路径,因此这是简单递归的学校示例:

    var a = [];
    a[0] = [4];
    a[1] = [2,4];
    a[2] = [6,4,2];
    a[3] = [7,4,2,1];
    a[4] = [9,4,2,1,4];
    
    function r(s, v, h) { // string, vertical, horizontal
      s = s + a[v][h];
      if (v>3) {
        console.log(s);
      } else {
        r(s, v+1, h);
        r(s, v+1, h+1);
      }
    }
    console.log('-----------------')
    r('', 0, 0);
    

相关问题