给定一个州列表,就像在美国州一样,我正在尝试编写一个算法来判断这些州是否是连续的。顺序无关紧要,可以重新访问状态。
例子:
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#,但请随时用其他语言给出答案。