原创 C/C++ 學習筆記:C++ 中 string 類使用總結

C++中的string類使用總結 需要使用 using  std::string; 或 using namespace std;string類的構造函數 string(const char *s);// 用 C 類型字符串s初始化 st

原创 單源最短路徑(Dijkstra)算法

Dijkstra 算法是一種貪心算法。 假定源點爲 u,頂點集合 V 被劃分爲兩部分:S 和 V-S,其中 S中的頂點到源點的最短路徑的長度已經確定,V-S中的頂點到源點的最短路徑待定。 思想: 1. 每次從 V-S 中選擇一個距離 源點

原创 劍指Offer:字符流中第一個不重複的字符

字符流中第一個不重複的字符 題目描述 請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一個只出現一

原创 最小生成樹之普里姆(Prim)算法

Prim 算法是一種貪心算法(適合稠密圖) 設G=(V, E) 是無向連通帶權圖,V={0, 1, 2, ..., n-1};設最小生成樹 T=(U, E'),算法結束時 U=V,E'⊆E。 貪心選擇的思想是:每次對於還未加入到 U 中(

原创 表示數值的字符串

判斷一個字符串是否表示數值,可以爲整數、小數,可以帶科學計數法形式。 一個數值的表示:[符號]若干個整數[.[若干個整數]][e|E[符號]若干個整數] C++代碼: void scanDigit(char* &String) {/

原创 C/C++ 學習筆記:類相關

構造和析構次數: A* p =new A[5];//  構造五次 delete[ ] p;//  析構五次 delete p;// 若不使用[ ],則析構一次。假設 A 是一個類,像這樣 A a(); 並不是表示調用構造函數創建對象

原创 劍指Offer:鏈表中環的入口節點

1. 如果鏈表中有環,可以通過快慢指針,最後快慢指針肯定會相會於環中的某個節點; 2. 從這個相會的節點開始,當再次遇到該節點,即可統計環中有節點數 n; 3. 設置兩個指針p,p1,p從頭先走 n 步,p1在頭部,然後兩個指針同時 走,

原创 N 皇后問題-回溯法

N 皇后問題:在 N × N  的棋盤上放置彼此不受攻擊的 N 個皇后,任意兩個皇后不同行、不同列、不同斜線。 思路: 1. 因爲皇后不能同行,所以,在每一行放置一個皇后就行 2. 當在一行放置皇后的時候:      1) 順序檢查這一行

原创 生成所有 n 位格雷碼

n 位元的格雷碼,那麼格雷碼的個數爲 2^n #include <iostream> #include <vector> #include <cmath> using namespace std; /* 利用遞歸的如下規則來構造:

原创 C/C++ 學習筆記:全局變量隨筆

全局變量的優缺點: 1)      全局變量過多會佔用更多的內存(因爲其生命期長) 2)      提高了耦合性,牽一髮而動全身,時間久了,代碼長了,就不知道全局變量被哪些函數改過。 3)      提高了模塊間的耦合性,對後期維護、拓展

原创 矩陣中的路徑

題目描述 請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則該路徑不能再進入

原创 C/C++ 學習筆記:字符串、數組相關

C/C++ 中所有字符串字面值都由編譯器自動在末尾添加一個空字符,即默認以 \0 結尾。 eg:字面值 "tang"  實際上是 "tang\0",字面值"tang\0" 實際上是"tang\0\0" char 數組 ch

原创 C/C++ 學習筆記:指針數組 數組指針 指針函數 函數指針

轉自:這個地方 int*p[4];         // 指針數組。  是個有4個元素的數組,每個元素的是指向整型的指針。 ( 數組的每個元素都是指針 ) int(*p)[4];       // 數組指針。  它是一個指針,指向有

原创 操作系統內存管理——分區、頁式、段式管理

轉自:這個地方 計算存儲的層次結構: 當前技術沒有能夠提供這樣的存儲器,因此大部分的計算機都有一個存儲器層次結構,即少量的非常快速、昂貴、易變的高速緩存(cache);若干兆字節的中等速度、中等價格、易變的主存儲器(RAM)

原创 二叉樹學習筆記

二叉樹 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x),