Open ccckmit opened 2 years ago
更大的測試資料
提示:
後來我想到一個比 swap 更好的方法,就是對一個 circle 取兩個點,然後將其夾住的鏈翻轉過來。
資料結構可用一個整數陣列 n[0..k-1] 表示,例如 0=>1=>2=>3=>0 的圖可用以下陣列表示:
n[0] n[1] n[2] n[3] 1 2 3 0
表示成 Graph 如下:
graph TD; 0-->1; 1-->2; 2-->3; 3-->0;
若我們挑出 0=>1 與 2=>3 兩個邊交換,那就會變成
n[0] n[1] n[2] n[3] 2 3 0 1
graph TD; 0-->2; 2-->3; 3-->1; 1-->0;
重點是鄰居可以用:《對一個 circle 取兩個點,然後將其夾住的鏈翻轉過來》的方法處理。
也就是:
a<=>b c<=>d
調過來後,變成
a<=>d b<=>c
其餘結構不變,如下圖所示
https://github.com/FUYUHSUAN/ai110b/tree/master/HW/2022_03_10
https://gist.github.com/austin362667/b90c2ef7884bdfe9d0f2a6fd48ed832e
資工三 110810538 魏美亞 notes code
110810535
110810518徐仁鴻 作業
更大的測試資料
提示:
後來我想到一個比 swap 更好的方法,就是對一個 circle 取兩個點,然後將其夾住的鏈翻轉過來。
資料結構可用一個整數陣列 n[0..k-1] 表示,例如 0=>1=>2=>3=>0 的圖可用以下陣列表示:
表示成 Graph 如下:
若我們挑出 0=>1 與 2=>3 兩個邊交換,那就會變成
表示成 Graph 如下:
重點是鄰居可以用:《對一個 circle 取兩個點,然後將其夾住的鏈翻轉過來》的方法處理。
也就是:
調過來後,變成
其餘結構不變,如下圖所示