【问题标题】:Creating a tree in lisp在 lisp 中创建树
【发布时间】:2015-05-06 03:34:37
【问题描述】:

我一直在对 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 比较陌生,但我对它的工作原理有相当好的了解。

【问题讨论】:

  • 由于您在技术上没有提出任何问题(或者至少我没有提出任何问题),我想您正在寻找正确的问题。对于“我用什么数据结构来表示飞行图?”这个问题,我会推荐一个排序数组对和它们交换的双精度数,因为你只写一次图形,然后读/搜索很多。以城市为键的哈希表也会有所帮助。

标签: tree lisp common-lisp


【解决方案1】:

您可以只创建一个由n 元素(城市)组成的数组,最初全部为 NIL,然后为每一对 a/b 您只需这样做

(push b (aref cities a))
(push a (aref cities b))

读取所有定义后,数组的第 k-th 元素将是您可以从城市 k 直飞到达的城市列表。

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 2016-03-14
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2013-01-24
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多