給出一個國家名單,如美國國家,我試圖寫一個算法來說明這些州是否是連續的。順序無關緊要,狀態可以重新訪問。連續(美國)州檢查
實例:
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#,但隨意給其他語言的答案。