Contents
Problem
給定各個珠子的顏色,每個珠子要相連,它們連接地方的顏色要相同。
有多種答案表示,任一種都可。
Solution
把顏色當作點,珠子當作邊,來做歐拉迴路。
關於歐拉迴路的定義和做法可參考:
https://zh.wikipedia.org/wiki/一笔画问题
演算法筆記
主要就是利用歐拉迴路中,隨便走一圈直到不能走,會是個小的歐拉迴路,也就是到達剛剛的起點。以此為基礎遞迴將每個小歐拉迴路走完。(D&C)
還有利用每個點的 degree 來判斷這張圖是否是歐拉迴路。(每個頂點的 degree 都是偶數)
處理顏色時,可額外用陣列依序對應其顏色,加速查詢。
Code
1 |
|