原创 C實現的內存chunk管理器

功能: 1.C實現的簡單的,可擴展的內存chunk管理器; 2.支持Top, Push, Pop幾種簡單的操作; 3.由於一個內存chunk可以有多個元素,不同的chunk可以大小不等; 優點: 1.可以將其擴展爲一個簡單的內存管理

原创 Edit distance problem 動態規劃和遞歸解法之比較

問題: 給定字符串firstStr,secondStr,長度分別爲m,n。通過delete, insert, replace 操作把firstStr轉化爲secondStr,而這三種操作的每次執行成本分別爲delCost, insCos

原创 泛型,Quick Sort 的C/C++兩種實現方式

Quick Sort 作爲20世紀的10大算法,實現的算法思想爲分治策略(Divide And Conquer)。分治策略這種思想是程序設計中最常用到的思想。它的基本思想是把原問題遞歸劃分爲若干個子問題,通過分別求解子問題(相對簡單情況)

原创 搜尋最長迴文子串的解法之比較

問題描述: 迴文字符串,也即正反兩個方向讀取的字符串應該一樣。比如ABCDCBA。         本文的問題是,給定一個字符串輸出其最長的迴文串。 解決方法: 1.暴力搜索(Brute force)         2.動態規劃(dy

原创 輸出給定集合的所有真子集的三種方法之比較

問題描述: 給定一個輸入集合,輸出所有的真子集 問題解法:    1. 一般的遞歸方法:    2. 通過取元素組合的方法:         集合的真子集不外是集合1,2,... ,n個元素的所有組合;    3. bit 運

原创 子集和是否存在問題的動態規劃和遞歸解

問題描述: 給定一個整數的集合S,給定一個整數V,確定是否存在集合S的子集且元素之和等於V子集; 解法: 代碼如下:#ifndef _SUBSET_SUM_H_ #define _SUBSET_SUM_H_ /* * The sol

原创 硬幣兌換問題的兩種解法之比較

給定一個集合的硬幣面額比如:int coin[] = {1, 2, 3, 4, 5, 6, 8},並且假定每個面額的硬幣個數無限多;再給定一定面額的紙幣比如100,求解共有多少種兌換法? 這個問題常用兩種解法,一個是遞歸搜索,一個是動態規

原创 格子取數問題的動態規劃和遞歸解法之比較

 題目詳情: 有n*n個格子,每個格子裏有正數或者0,從最左上角往最右下角走,只能向下和向右,一共走兩次(即從左上角走到右下角走兩趟),    把所有經過 的格子的數加起來,求最大值SUM,且兩次如果經過同一個格子,則最後總和SUM中該格

原创 一些基本算法的遞歸實現

問題描述: 遞歸是計算機科學中最偉大的思想。按照我的理解,所謂遞歸就是把問題化約爲比自身維度更小的問題,直至邊界點(base condition), 然後利用邊界點的解的結果(相對容易得到)和一定規則回退得到最終所需要的結果。      

原创 最長公共字符串(longest common substring)和最長公共字序列(longest common subsequence)解法之比較

問題描述: 最長公共子串:給定兩個字符串s1,s2,求兩個串公共的子串; 最長公共子序列:給定兩個字符串s1,s2, 其兩個串公共的子序列,即按照從頭到尾的順序,尋找兩個串共有的字符集(不要求連續); 問題解法: 下面分別給出兩個問題的

原创 支持泛型AVL Tree的簡單實現,並和STL map比較了插入,刪除,查找的性能

1.問題描述:    1)AVL tree是一種自平衡樹。它通過左右子樹的高度差來控制樹的平衡,當高度差是不大於1的時候,認爲樹是平衡的。樹的平衡保證了樹在極端情況下          (輸入序列不夠隨機)的性能。很顯然當左右子樹高度平衡

原创 一個依靠STL vector的接口進行申請和回收管理的內存池類( c++ 封裝)

問題描述: 1.利用STL vector維護不同的多個定長單元的內存塊; 2.當內存池外部申請內存是,利用STL vector at 接口和有效內存索引高效返回所需內存,然後增加有效內存索引到下一個; 3.當外部交還內存到池子時,交換這個

原创 利用內存chunk充當數據buffer的stack的一個簡單實現

問題描述: 1.stack是計算機中最常用到的數據結構,它主要依據支持後進先出(LIFO)操作抽象而出的一種數據結構;       2.本文嘗試自己封裝一個泛型的stack class,它支持常見的操作;       3.這個類的底層的數

原创 c++封裝的用來存儲key value pair的內存池類

問題描述: 1.c++封裝的用來存儲key, value對的內存池; 2.key 用字符串表達,value可以是各種類型。目前value只支持六種類型,後面會繼續擴展; 3.key value pair 內存結構是:key length(

原创 利用內存chunk充當數據buffer的vector的實現,和STL vector 有接口操作性能比較

問題描述: 1.vector是最常用到的容器,它其實是一種自動擴充的動態數組,底層實現通過兩倍擴展,    所以再不能預知要存入元素多少時,難免要兩倍擴展,這帶來了拷貝所存對象的開銷; 2.本文嘗試利用memory chunk作爲底層存