原创 好用的數據結構

    這是我第一次寫博客!感覺好緊張阿!哈哈~~      根據我的比較膚淺的理解呢!要用好數據結構  ,首先必須得要熟悉vector與list,最好要自己能實現這兩種數據結構的基本功能。這應該是最起碼的要求!            

原创 凸包算法的蠻力實現

 蠻力實現凸包算法,思路是相當簡單的,每兩個點形成一條邊來看看他是否是邊界線——即看其他的點是否都在這條邊的左邊或都在右邊:下面就是我的算法C++實現:   #include<iostream> #include<vector> usin

原创 利用優先隊列實現的dijkstra算法

            dijkstra算法是典型的貪心算法,但如果沒有好的數據結構支持的話,O(v^2)的效率還是讓人有點不滿意,不過如果利用優先隊列的話就能輕鬆的實現O(ElogV+VlogV),對       於稀疏圖來說,這是很令

原创 又是圖論-穩定婚姻算法的C++實現

        穩定婚姻是一個很有意思的二分圖問題,這在生活中是一個典型的問題,通俗地可敘述爲:當前有N位男生和N位女生最後要組成穩定的婚姻家庭,過程開始之前男生和女生在各自的心目中都按照喜愛程度對N位異性有了各自的排序.然後開始選擇自己

原创 貪喫蛇c++實現

最近沒事翻了一下以前寫的程序,真是不堪入目,以前真是什麼都不懂,不過有一個程序倒是挺有意思的,大二的時候寫的一個貪喫蛇遊戲,雖然程序非常難看,還有很多漏洞,但也是這個程序讓我真正開始喜歡上了編程,不多說啦,先看看代碼! #include<

原创 最大二分圖匹配的C++代碼實現

    最大二分圖匹配是典型的圖論問題,一般有兩種做法,一種是運用最大流的思想,不過這種方法效率太低,爲O(VE^2),沒有利用好二分圖的特殊性質。另一種做法是匈牙利 算法,這種方法也是利用了增益路徑的思想,但這種方法充分利用了二分圖的性

原创 最大流—最小割的C++實現

     最大流與最小割是圖論裏最經典的算法之一:爲了實現這個算法,儲存方面我用的是圖的鄰接表而不是鄰接矩陣,因爲我覺得鄰接表效率會更快一點,而算法方面我用的是廣度優先搜索,這種方法效率也是比較高的,下面就是我的算法的c++實現: #

原创 堆放木塊與ferrers圖

今天終於把堆放木塊那題做出來了,也算是很幸運,有一天突然看到ferrers圖,讓我有了一點思路,下面我來講一講什麼是ferrers圖: ferrers圖是一個從上而下的n層格子,mi 爲第i層的格子數,當mi>=mi+1(i=1,2,

原创 最大流與最小割C++實現2——深度優先搜索

         剛剛寫了一個最大流與最小割的的廣度優先搜索實現!後來我發現只要用棧來替代隊列來儲存標記的頂點,便實現了深度優先搜索. 但要注意此時應該先把後向邊壓入棧!以下是我的代碼實現: #include<iostream> #inc

原创 圖論之最小生成樹

  這次的生成樹是匆忙寫出來的,所以代碼有點難看!我用的是kruskal算法,我認爲這個比prim算法好理解一點!就是每次找未知邊的最小邊,在判斷此邊的兩個點在已知邊下是否連通——這裏就要用到我剛說的不相交集類,如果連通則放棄,不連通則加

原创 數據結構之二叉查找樹的C++實現

     二叉樹是結構最簡單的樹了,而二叉查找樹又是特殊的二叉樹,它能實現高效的查找,刪除,插入等基本操作,STL裏的map與set就是用了自平衡的二叉查找樹的思想實現的 不過我這裏先不實現自平衡功能,但這又是很重要的,等下我會說明,現在

原创 自適應膚色識別

      膚色識別是數字圖像的一個重要課題,現在已經有很多方法解決這個問題,其中不乏很多好的方法,但幾乎都有各自的缺陷,很難達到完美,畢竟能否識別成功,識別是否精確取決於很多因素。      我做的是基於YUV空間和YQI空間的自適應光

原创 de Casteljau算法的matlab實現

          一直在寫c++程序,不過對於一些作圖程序來說,還是MATLAB比較實在。            de Casteljau算法是作貝塞爾曲線的一種高效的算法,其思想就是對[0,1]區間中所有的t,通過n個控制頂點不斷遞推

原创 後綴數組

後綴數組——處理字符串的有力工具 作者:羅穗騫 2009年1月   【摘要】   後綴數組是處理字符串的有力工具。後綴數組是後綴樹的一個非常精巧的替代品,它比後綴樹容易編程實現,能夠實現後綴樹的很多功能而時間複雜度也並不遜色,而

原创 堆放木塊C++實現

   堆放木塊是題很有意思的題目,原題的描述爲:   我們用2維數組n[i][j] 表示平面上凸起的高度。或者說在二維平面上堆放立方體,滿足 (每個數組元素都是非負整數)    n[i][j] <= n[i][j+1] n[i][j] <