我有一个表示城市道路的T形图的问题,需要计算所有可能的方法(排列)来建立这些道路。
角色是“您必须先完成第1级才能开始第2级”,以此类推。
此图说明了这个主意here
我试图将其视为每个级别的数组,然后将其视为每个分支的单个列
level1=[1 2]
level2=[3 4
5 6]
和 l
;evel1=[1 2 3]
level2=[4 5 0;
6 7 8;
9 10 0]
level3=[11 12;
13 0;
14 15;
16 17;
0 0;
0 0;
18 19]
但是我停了下来,不知道如何完成。所以我需要知道如何思考这类问题。
答案 0 :(得分:0)
您应该研究“抽象数据类型”的概念,因为当前的设计无法扩展。每次添加新级别时,都需要创建一个新数组,然后更新代码以了解该新数组。
在进入下一个级别之前搜索一个级别的过程称为“宽度优先”搜索。如果创建列表类型,则可以将当前级别的所有节点添加到列表中,然后在处理列表时,将子节点添加到列表的末尾。
但这并不真正适用于生成所有排列-当您沿着树行进时,“深度优先”更适合,并且当您无法继续前进时,您采取的路径就是排列。 / p>