为了账号安全,请及时绑定邮箱和手机立即绑定

像图表一样迭代二维数组

像图表一样迭代二维数组

心有法竹 2023-12-26 16:47:02
我已将图形存储在二维数组中,并且我想打印从左到右通过组的任何有向图的所有可能路径。我在下面给出了一个示例,并希望打印从第一组(在本示例中为 G1)到任何最后一组(在本示例中为 G3)的所有路径。我无法构建递归或递归方法来打印具有任意数量组的所有路径。所以我需要帮助构建手动迭代系统/算法。谢谢。graph:script.pymap = [  [1,2],  [3,4,5],  [6,7]]// Print all paths// Note :- every array in the map is a groupoutput:1 -> 3 -> 61 -> 3 -> 71 -> 4 -> 61 -> 4 -> 71 -> 5 -> 61 -> 5 -> 72 -> 3 -> 62 -> 3 -> 72 -> 4 -> 62 -> 4 -> 72 -> 5 -> 62 -> 5 -> 7
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

根据描述,您需要变量“map”中提到的所有路径的可能组合。因此,您可以使用 itertools 来获取路径的所有可能组合。


我想这应该对你有用:


import itertools

pattern = list(itertools.product(*map))

print(pattern)

输出


[(1, 3, 6),

(1, 3, 7),

(1, 4, 6),

(1, 4, 7),

(1, 5, 6),

(1, 5, 7),

(2, 3, 6),

(2, 3, 7),

(2, 4, 6),

(2, 4, 7),

(2, 5, 6),

(2, 5, 7)]


查看完整回答
反对 回复 2023-12-26
?
青春有我

TA贡献1784条经验 获得超8个赞

这是一个使用递归的解决方案,并且不使用库,它可以与任意数量的组一起使用


mp = [

  [1,2],

  [3,4,5],

  [6,7]

]


def possible_path(M,index,combination):

    for i in M[index]:  

        if index<len(M)-1:

            possible_path(M,index+1,combination+[i])

        else:

            print(combination+[i])


possible_path(mp,0,[])

这是输出:


[1, 3, 6]

[1, 3, 7]

[1, 4, 6]

[1, 4, 7]

[1, 5, 6]

[1, 5, 7]

[2, 3, 6]

[2, 3, 7]

[2, 4, 6]

[2, 4, 7]

[2, 5, 6]

[2, 5, 7]


查看完整回答
反对 回复 2023-12-26
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信