我一直在对lisp中的树进行大量研究,并且我正在尝试解决uva问题(11695飞行计划(http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2742)以供参考)。我目前已经解决了大部分问题,但是我在第一个障碍时将输入更改为树有点难倒。 输入的示例将是
的形式1 2
2 3
3 4
我在互联网上遇到过很多关于如何设置树的问题,但大多数情况下,它的数字都是在树上而不是这种格式。我也研究过图论,但这让我无处可去。
我在这方面取得的唯一进展是,我可能会将每个“路径”放入他们自己的列表中,并且基本观察到每个列表的第一个是父级,每个列表的第二个是是他们的孩子(也可能成为另一个孩子的父母)
如果有人对我如何处理这个问题有任何建议,那就太棒了。我还没有找到任何我能在网上申请的东西,所以我想我会找到其他人的想法。
我对Lisp相对较新,但我对它的工作方式有了相当好的理解。
答案 0 :(得分:0)
您最初可以创建一个n
个元素(城市)数组,这些数据最初都是NIL,然后为每个a
/ b
创建
(push b (aref cities a))
(push a (aref cities b))
读取所有定义后,数组的k
元素将是您可以直接从城市k到达的城市列表。