Time of Update: 2018-12-03
還是王富濤啊,留言問了一個和 “類的引用成員資料” 有關的問題。什麼叫“類的引用成員”,看看:Code:class Coo { int& ref; //ref 是一個引用 }; “引用”是什嗎? 實現上,引用記的是另一個變數的地址,引用自己並沒有“真身”。這一點和指標很像了,除了使用文法不同外,重要不同是,C++規定不能有“Null 參考”(java語言存在Null
Time of Update: 2018-12-03
第1章
Time of Update: 2018-12-03
下面是幾個比較大的線上提交系統(Online Judge)裡面有大量曆年的競賽題目,註冊一個ID,然後用自己熟悉的語言(一般有Pascal/C/C++/Java)寫好原始碼提交即可,會即時返 回資訊告訴你是否正確。採用黑箱測試,系統裡有一套標準的輸入輸出資料(對外保密,而且通常資料很多很怪),你的程式的輸出和標準輸出完全符合即可。 常見的返回資訊有 AC(Accepted,通過)、WA(Wrong Answer,輸出有錯誤)、TLE(Time Limit
Time of Update: 2018-12-03
將一個中序運算式轉化成為逆波蘭運算式的方法其實很簡單,也是一個成型的演算法。通過逆波蘭運算式求一個計算式子的值,也是很簡單的,只要遇到過會用就行了。1、將一個中序運算式轉化成為逆波蘭運算式。 首先維護的是兩個棧,我們這裡暫且稱為S1和S2,S1中的結果最後存的就是逆波蘭運算式,S2中將用於暫時存放運算子並且在最終形成逆波蘭運算式的時候,該棧是會清空的。下面我們看看怎樣具體的形成逆波蘭運算式。
Time of Update: 2018-12-03
(本文為自己參考網上的資料整理所得,如果有所紕漏或者錯誤,請留言指明!謝謝!) gcc可以用來編譯連結.c來源程式,gcc同樣可以編譯.cpp檔案,但是不能連結.cpp檔案產生可執行檔。只有g++可以編譯並且連結.cpp,g++在編譯.cpp檔案的時候自動調用gcc進行源檔案的編譯。 下面來看看gcc/g++常用的參數。一、gcc/g++常用的參數-IDir指定額外的標頭檔搜尋目錄,編譯器首先在Dir中尋找,然後按照常規的順序搜尋標頭檔。-include
Time of Update: 2018-12-03
強連通分量是有向圖中的概念,我們先說強連通分量的定義吧:在一個圖的子圖中,任意兩個點相互可達,也就是存在互連的路徑,那麼這個子圖就是強連通分量(或者稱為強連通分支)。如果一個有向圖的任意兩個點相互可達,那麼這個圖就稱為強連通圖。 我們常用的求強連通分量的演算法有兩個,一個是Kosaraju演算法,這個演算法是基於兩次dfs來實現的;還有一個就是Tarjan演算法,這個演算法完成一次dfs就可以找到圖中的強連通分支。我的這篇文章主要介紹Tarjan演算法。
Time of Update: 2018-12-03
動態庫,又叫做共用物件程式庫,以.so結尾。使用動態庫時,編譯器並不直接在編譯的時候將代碼嵌入到目標檔案中,而是等到運行時調用相應的函數,才載入代碼。 靜態庫,又叫做歸檔檔案,以.a結尾。使用靜態庫的時候,編譯器在編譯過程中直接將代碼嵌入到目標檔案中,所以一旦完成編譯,那麼靜態庫可以不需要了。1、編寫靜態庫以及使用靜態庫首先編寫hello.h檔案。然後編寫hello.c檔案。然後編寫main.c。我們使用gcc -c
Time of Update: 2018-12-03
對於最近公用祖先問題,我們先來看這樣一個性質,當兩個節點(u,v)的最近公用祖先是x時,那麼我們可以確定的說,當進行後序遍曆的時候,必然先訪問完x的所有子樹,然後才會返回到x所在的節點。這個性質就是我們使用Tarjan演算法解決最近公用祖先問題的核心思想。 同時我們會想這個怎麼能夠保證是最近的公用祖先呢?我們這樣看,因為我們是逐漸向上回溯的,所以我們每次訪問完某個節點x的一棵子樹,我們就將該子樹所有節點放進該節點x所在的集合,並且我們設定這個集合所有元素的祖先是該節點x。
Time of Update: 2018-12-03
[回到目錄]白話C++3.14.Hello STL 演算法篇 前一小節,在輸出成績時,我們從students中得到每個學生的學號,然後,通過for迴圈,在一個list中尋找符合“學號等於指定值”的元素。代碼如下(為了方便說明,行號進行了重排):001 for (list<Score>::const_iterator iter = scores.begin(); iter != scores.end(); ++iter)
Time of Update: 2018-12-03
下面的面試題都是我在網上或者論壇上看到,結合自己的解法,給大家分型。但是也有可能有的題目還沒有看到正確解法的面試題或者筆試題,如果哪位牛人看到這些題,並且有想法或者會的話,麻煩留言,給大家分享,多謝!1、已知一個數組,求第一個只出現一次的那個數。要求時間複雜度為O(n),空間複雜度為O(1)。解答:http://blog.csdn.net/geniusluzh/article/details/83097962、求一個序列的最大和第二大的值。解答:
Time of Update: 2018-12-03
視窗和標籤頁捷徑Ctrl+N開啟新視窗按住 Ctrl 鍵,然後點選連結在新標籤頁中開啟連結按住 Shift 鍵,然後點選連結在新視窗中開啟連結Alt+F4關閉當前視窗Ctrl+T開啟新標籤頁Ctrl+Shift+T重新開啟上次關閉的標籤頁。 Google瀏覽器可記住您關閉的最後 10 個標籤頁。將連結拖動到標籤頁內在指定標籤頁中開啟連結將連結拖動到兩個標籤頁之間在新標籤頁橫條上的指定位置開啟連結Ctrl+1 到 Ctrl+8切換到指定位置編號的標籤頁。
Time of Update: 2018-12-03
在說Tarjan演算法解決橋和邊雙連通分量問題之前我們先來回顧一下Tarjan演算法是如何求解強連通分量的。
Time of Update: 2018-12-03
這道題是09年上海地區賽的A題,雖然很水,但是不能直接爆搜,直接爆搜要T。於是我們看到題目的要求是說當操作的步數大於3的時候就輸出more,那麼我們可以從終態枚舉進行了三次操作所能達到的所有狀態,這個是用廣搜應該還是很好寫的。我們直接使用vis數組就完全可以勝任這個記錄了,沒有必要用任何的結構體。
Time of Update: 2018-12-03
這道題好傷心啊,我wa了好久,原因是我理解錯了題意。 下面還是先說說題目的解題思路吧:1、當兩條線段不想交的時候結果是0.00,這裡就排除了平行的情況;2、當兩條線段有任一條平行於x軸的時候,結果同樣為0.00;3、當兩條線段相交但是是共線的時候(用平行來判斷),結果同樣為0.00;4、還有一種情況就是說,如果存在,某一個在上面的木板擋住了下面的木板的時候,那麼同樣結果為0.00;
Time of Update: 2018-12-03
Code: class Coo { public: Coo() : a(0) {} int getA() const //常量成員函數 { ++a; //編譯錯誤 return this->a; } private: int a; };
Time of Update: 2018-12-03
簡單面試題http://blog.csdn.net/geniusluzh/article/details/8248988 這道題的確切描述是:一個字串的長度小於10^4,只由大寫字母組成,讓你找到第一個只出現一次的字元的下標。比如ABACC,那麼結果就是1。如果我們需要在O(N)的時間複雜度和O(1)的空間複雜度內解決該題,有什麼好的辦法呢?
Time of Update: 2018-12-03
這道題應該說是線段樹和樹狀數組簡單的應用吧!都是用到了基本的功能更新區間尋找點!當使用線段樹時,不想原來更新點尋找區間那麼簡單,這裡需要在結構體內另外添加一個lnc用來記錄更新區間時正好覆蓋到該地區時的改變值!然而在尋找區間過程中當所尋找的區間並不是給定的區間時,需要把給定的區間的sum值進行更新改變!並且也把該子區間的調用update進行更新,這樣才能維護一個更新區間尋找區間的線段樹!用樹狀數組時需要注意此時read(i)就是讀取下表為i的值為read(i)!注意數組盡量開大點!避免出現wa或
Time of Update: 2018-12-03
在我第一篇筆記 《C++ 的
Time of Update: 2018-12-03
主流的幾個像POJ、ZOJ、HDUOJ、HOJ(哈工大)、HUST(華中科大)的幾個就不介紹了!下面介紹幾個很不錯但是很少人知道的OJ!希望對讀者有些許協助!以下的介紹順序不是按任何順序排列的,為看到想到才寫的!若有不妥之處,請讀者見諒!! Vijos(Velocious Informatics Judge Online System)地址:http://www.vijos.cn/介紹: Vijos是Vivian
Time of Update: 2018-12-03
有網友學生針對《白話C++》問到一個小事, 有關虛函數和多態:“ 如果說虛函數是為了讓衍生類別的對象擁有特別、與人不同的個性的話。那麼定義一個基類的堆變數:卻用衍生類別對堆變數進行執行個體化:Code:Person *someone; someone=new Beauty; 這有什麼用?有什麼好處嗎?與其這樣,為什麼不乾脆把基類、衍生類別對象分別執行個體化?