原创 STL源碼學習總結及項目下載地址

        從開始看STL源碼到今天差不多有一個月的時間了,在這研讀STL源碼過程中確實學習到了很多,深深被大師們的設計思想所打動。其中使用迭代器的思想是其STL的最大的亮點,通過泛型編程,是得所有的容器對外都提供統一的訪問接口,而屏

原创 紅黑樹的實現

在寫完線性容器以後,再來看關聯性容器。在關聯性容器中,set,map容器都是基於紅黑樹而實現的,故花了幾天時間寫下來紅黑樹的代碼。其原理可以參考算法導論。在寫過程中也參照了網上別人寫的代碼。其代碼實現如下: #include<iostr

原创 map容器設計

在紅黑樹基礎上設計map容器,在設計map時,可以明顯利用的map模板類中KEY,VALUE,KEYOFVALUE的靈活運用 不多說,代碼如下: //my_map.h #ifndef MY_MAP_H_INCLUDED #define

原创 從頭到尾實現deque

關於deque內部數據結構的說明: deque是能夠同時在收尾進行插入和刪除的數據結構。其表現形式看起來和vector差不多,但是在處理隊頭插入時,

原创 常見的文件和目錄函數

在APUE這本書,第三章與第四章都是在講一些關於文件操作和目錄操作的函數。簡單地說明一下涉及到的函數及其使用。   open函數 原型爲: #include<fcntl.h>   int open(const char *pathname

原创 動態規劃與貪心算法區別以及如何思考動態規劃

動態規劃和貪心算法的區別動態規劃和貪心算法都是一種遞推算法 均有局部最優解來推導全局最優解 不同點: 貪心算法: 1.貪心算法中,作出的每步貪心決策都無法改變,因爲貪心策略是由上一步的最優解推導下一步的最優解,而上一部之前的最優解則不作保

原创 uva 103 Stacking Boxes

Background Some concepts in Mathematics and Computer Science are simple in one or two dimensions but become more comp

原创 基數排序

#include<stdio.h> #include<stdlib.h> #include<math.h> #include<vector> #define maxn 100 using namespace std; int a[maxn

原创 C/C++預處理器

C/C++編譯系統編譯程序的過程爲預處理、編譯、鏈接。預處理器是在程序源文件被編譯之前根據預處理指令對程序源文件進行處理的程序。預處理器指令以#號開頭標識,末尾不包含分號。預處理命令不是C/C++語言本身的組成部分,不能直接對它們進行編譯

原创 常見算法

下面是我在網上找到一個算法的分類,感覺還是挺全的。 ================================================================== 初期:  一.基本算法:  (1)枚舉.

原创 樹形DP經典題

題目傳送門 題意: 給出一棵樹,求離每個節點最遠的點的距離 思路: 把無根樹轉化成有根樹分析, 對於上面那棵樹,要求距結點2的最長距離,那麼,就需要知道以2爲頂點的子樹(藍色圈起的部分,我們叫它Tree(2)),距頂點2

原创 火車進站

給定一個正整數N代表火車數量,0<N<10,接下來輸入火車入站的序列,一共N輛火車,每輛火車以數字1-9編號。要求以字典序排序輸出火車出站的序列號。輸入:有多組測試用例,每一組第一行輸入一個正整數N(0<

原创 C++ 關於聲明,定義,類的定義,頭文件作用,不具名空間

轉 自:http://www.cnblogs.com/rocketfan/archive/2009/10/02/1577361.html 1. 編譯單元:一個.cc或.cpp文件作爲一個編譯單元,生成.o。 2. 普通數據類型的定義

原创 樹狀DP入門

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 題目大意:給定一棵關係樹,每個節點有個權值,子節點和父節點不能同時選,問最後能選的最大價值是多少? 解題思路:樹形DP入門題。由

原创 C語言從stdin讀取一行字符串的幾種方法

C語言從stdin讀取一行字符串的幾種方法 gets gets函數的頭文件是<stdio.h>,原型如下: char *gets(char *s); gets從stdin中讀入一行內容到s指定的buffer中,當遇到換行符或