给出一个国家名单,如美国国家,我试图写一个算法来说明这些州是否是连续的。顺序无关紧要,状态可以重新访问。连续(美国)州检查
实例:
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#,但随意给其他语言的答案。