實驗12 1(著色問題)

2021-10-06 16:05:14 字數 623 閱讀 5236

圖的m著色問題。給定無向連通圖g和m種顏色,用這些顏色給圖的頂點著色,每個頂點一種顏色。如果要求g的每條邊的兩個頂點著不同顏色。給出所有可能的著色方案;如果不存在,則回答「no」。

如果把每乙個區域收縮為乙個頂點,把相鄰兩個區域用一條邊相連線,就可以把乙個區域圖抽象為乙個平面圖。

用m種顏色為圖中的每個頂點著色,要求每個頂點著一種顏色,並使相鄰兩頂點之間有著不同的顏色。

可以通過回溯的方法,不斷的為每乙個節點著色,在前面n-1個節點都合法的著色之後,開始對第n個節點進行著色,這時候列舉可用的m個顏色,通過和第n個節點相鄰的節點的顏色,來判斷這個顏色是否合法,如果找到那麼一種顏色使得第n個節點能夠著色,那麼說明m種顏色的方案是可行的。

使用回溯法,具體步驟是將cur=1傳入backtrack(),即從第乙個開始塗色。

塗的時候從顏色1開始到m,每當塗上乙個色,要用ok(cur)判斷第cur個點是否可以塗這個色,不可以的話就不再往下塗了,改試另乙個顏色,可以的話就繼續。

當cur>n的時候即前n個點都塗完了,然後輸出結果並cou++計數。

最壞情況下的時間複雜度為o(nm^n)。

實驗報告 12 1

作 者 zhang lu 完成日期 2012 年 05 月 07 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 由下面派生類student1對基類student的繼承 問題描述 1 請修改基類中成員的訪問限定符和派生類的繼承方式,考慮可能的執行結果或可能出現的錯誤,並在上機時進行驗...

阿里 著色問題

寫出圖著色問題程式 乙個圓餅,被從中點畫半徑分成n等分,有k種顏色,每個區域不能和兩邊顏色相同.include include include include include 將乙個圓形等分城n個小扇形,將這些扇形標記為1,2,3,n。現在使用m種顏色對每個扇形進行塗色,每個扇形塗一種顏色,且相鄰的...

線段樹著色問題

線段樹節點記錄區間左右座標和區間顏色 如果父節點i表示 left,right 那麼父節點的左節點i 2表示區間 left,mid 有節點表示 mid 1,right 其中mid為left和right的中點 所有的節點存在tree陣列裡面 葉節點表示乙個點,即區間左右座標是一樣的 根節點代表區間 1,...