【发布时间】:2012-07-27 14:55:46
【问题描述】:
给定一个州列表,就像美国的州一样,我正在尝试编写一个算法来判断这些州是否是连续的。顺序无关紧要,可以重新访问状态。
例子:
-
AZ, CA, OR, WA是连续的 -
AZ, CA, NM, UT是连续的 -
AZ, NM, OR, WA不连续
假设:
- 我有一组代表状态的字符串。
-
我有一组状态连接。
class StateConnection { public string OriginState { get; set; } public string ConnectingState { get; set; } }
这个集合有两个方向的记录:
-
OriginState = AZ, ConnectingState = CA OriginState = CA, ConnectingState = AZ
我尝试了什么?
尝试 1: 对于集合中的每个状态,检查列表中是否至少存在一个与另一个状态的 StateConnection。
为什么它不起作用? 这允许第三个示例,其中有两个单独的连续范围要通过。
尝试 2: 检查后从候选连接状态列表中删除状态。这将需要一个完整的路径,该路径触及每个状态一次。
为什么它不起作用? 这不允许第二个示例,其中一个状态充当多个状态的中心。
好久没解决图论问题了,有点生疏了。
我不寻求最短路径或旅行推销员之类的东西。我不在乎走哪条路或使用了多少步。我只关心有没有差距。
我写的是 C#,但请随时用其他语言给出答案。
【问题讨论】:
标签: c# .net graph-theory