-2

这就是我要解决的问题。我有一系列数字,例如

    1 -> 2
    2 -> 3
    3 -> 4
    4 -> 2
    2 -> 1

我需要编写一个程序来证明这些数字是否是图上的点,它们形成某种循环。在上面的例子中 1 -> 2 -> 3 -> 4 -> 2 形成一个循环。

在以下示例中,没有循环。

    1 -> 2
    2 -> 3
    3 -> 4
    3 -> 5

不明白这是如何复制的。对不起,如果我的问题不清楚。我正在尽力描述它的水平。我有一组点/数字/节点。他们是成对的,他们也有方向。例如一对数字是 1 -> 2 2 -> 3 1 -> 2 3 -> 4 4 -> 2 2 -> 1 3 -> 4

当这些单独的节点从上到下连接时,我将得到如下链接列表 1 -> 2 -> 3 -> 1 -> 2 -> 3 -> 4 -> 2 -> 1 -> 3 -> 4

我不是在这组数字中寻找重复的模式。试图找到像 1 -> 2 -> 3 -> 1 这样的闭环是一个循环。2 -> 3 -> 1 -> 2 是一个循环。3 -> 1 -> 2 -> 3, 2 -> 3 -> 4 -> 2, 3 -> 4 -> 2 -> 1 -> 3 等等。在这个 wiki 链接中有一个循环是 1 _。6 -> 3 -> 1 http://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Functional_graph.svg/240px-Functional_graph.svg.png

希望这能说明问题!

4

1 回答 1

2

一种非常简单的方法是将两个数字作为键值对添加到哈希表中:

一旦你处于 key already exists 错误被抛出或 ContainsValue 条件为 true 的情况下,你就找到了一个循环。

于 2013-02-20T04:32:48.107 回答