今天做了兩個題,上午下午各做了一道,做完題之後開始看書,其中乙個題是關於四色定理的題,我感覺這個題很不錯,通過做一道題來學習乙個新的知識點,那麼這道題做的就非常有價值,看書看的是關於弗洛伊德的題和dijkstra演算法。
1.四色問題:四色定理就是無論多麼錯雜的地圖,只須要用四種色彩就能將它區分隔來,這四種顏色可以使相鄰的面顏色都不相同。
思路大致是這樣的:第乙個賦值1,第m個面賦值n(n從1開始),迴圈判斷m與1至m-1個面是否相鄰,如果相鄰且顏色也相同,那麼跳出迴圈,我們就需要對其賦的顏色n++,並且重新開始迴圈判斷。如果m與m-1個面迴圈判斷後沒有既相鄰又同顏色的,那麼m個面可以確定賦值為n。但是如果n到4都沒有符合條件,那麼我們就需要重新對m-1賦值,它的顏色應該+1,並且繼續迴圈判斷m-1。
channel allocation問題:這個問題就是用四色定理來解決的。
題目大意: 當乙個廣播電台在乙個非常大的地區,廣播站會用中繼器來轉播訊號以使得每乙個接收器都能接收到乙個強烈的訊號。然而,每個中繼器必須慎重選擇使用,使相鄰的中繼器不互相干擾。如果相鄰的中繼器使用不同的頻道,那麼就不會相互干擾。由於無線電頻道是一有限的,乙個給定的網路所需的中繼頻道數目應減至最低。
**:#include
#include
using namespace std;
int n,i,j,flag,vis[30],t;
char m[30][30];
void dfs(int x);
int main()}}
解題思路:對這n行逐行搜尋,通過四色定理求出共需要多少中繼器。
dijkstra演算法:用來計算從乙個點到其它所有點的最短路徑的演算法,只能計算起點是乙個點的情況。
注意:不能處理存在負邊權的情況。
演算法思想:剛開始將所有的點分為兩個集合,乙個集合1中只有起點,集合2中包含其餘的點,然後通過迴圈,每次迴圈把集合2中距離最短的點放入集合1中,然後看集合2中的距離是不是可以更改,然後重複此環節,直到集合2中的點全部放入集合1中為止。
8月5日總結
又是兩天沒寫了,總結一下這週的生活吧。8月2日,在俱樂部包宿,做了件很有意義的事 8月3日,上午還奮戰在一線,中午回寢後開始睡覺,直到18 30才醒,算是把覺給補回來了。8月4日,正常開發,不過感覺似乎沒做什麼實質性的東西出來,為了做分頁,新增了displaytag,用起來倒是十分方便,只是當壓力測...
8月5日總結
又是兩天沒寫了,總結一下這週的生活吧。8月2日,在俱樂部包宿,做了件很有意義的事 8月3日,上午還奮戰在一線,中午回寢後開始睡覺,直到18 30才醒,算是把覺給補回來了。8月4日,正常開發,不過感覺似乎沒做什麼實質性的東西出來,為了做分頁,新增了displaytag,用起來倒是十分方便,只是當壓力測...
8月4日總結
從今天早上開始做數獨的題,一直做到下午五點,剛開始看到這個題的時候感覺沒有地方下手,一點頭緒也沒有,因為每行每列每個宮格都不可以有重複的陣列,而且必須有1 9這九個數,剛開始一看題就感覺這個題的要求太多了。數獨問題 題目大意 9 9的方格使得每行中每列和每個標記的3x3子方格中不能有重複的數字並且有...