給定一組單詞,若單詞 A 尾字母 = 單詞 B 首字母,則 A→B 可連接。問能否將所有單詞排成一條鏈(每詞用一次)。
若以單詞為頂點,邊表示可連接,則是哈密頓路徑(NP-hard)。
改以26 個字母為頂點,每個單詞為一條有向邊(首字母→尾字母)。問題轉化為:有向圖中是否存在歐拉路徑/回路。
| 類型 | 條件 |
|---|---|
| 歐拉回路 | 連通 + 所有頂點 入度 = 出度 |
| 歐拉路徑 | 連通 + 恰有 1 個頂點 出度 = 入度 + 1(起點),1 個頂點 入度 = 出度 + 1(終點),其餘入度=出度 |
In[26]、Out[26]。UnionSet set(26);
int In[26]={0}, Out[26]={0};
bool vis[26]={false};
for (int i=0; i
將「單詞接龍」轉化為「字母圖歐拉路徑」,是圖論建模的經典範例。