原创 HDU ACM 1050 貪心
注意:輸入順序可以使凌亂的。 #include<iostream> using namespace std; inline void swap_(int &a,int &b) { int tmp_ = a; a = b;
原创 1058 醜數
如果直接一個個判斷過去, 肯定time out 。 所以弄一個數組存醜數, 空間換時間。 #include<iostream> using namespace std; int a[5843] = {0}; inline int min_
原创 數組指針操作元素
數組指針:int (*a)[10] ; 表示a的跨度是10個整數。 注意與指針數組區別 int *a[10]; 數組指針不能指向一維數組。 加入有一個二維數組table[10][10]; 如果要用a對table的第i行j列元素進行操作
原创 虛函實現原理
對於含有虛函數的類,編譯器會自動爲其生成一個一維的虛函數表vtable,用來存儲虛函數的入口地址。然後在實例化類對象的時候,會自動創建一個指向該類虛函數表的指針vptr。 當一個子類繼承父類(含虛函數)時,會賦值一個相同的虛
原创 HDU ACM 1024(最大子序列和)
2維表table[i][j] 表示將序列a1,a2,a3,...中的包含aj在內的j 個數分成i段,能得到的最大值。 So, table[i][j] = table[i][j-1] + aj , 表示aj 與aj-1 同屬同一段。
原创 ZJU PAT 1003 Emergency
最短路徑,DFS 、路徑非負的時候還能用dijkstra算法。 #include<iostream> using namespace std; inline int max_(int &a, int &b) { return a>b?a
原创 char ,unsigned char 還有位移 >>
>> << 對於有符號的用算術運算, 無符號的用邏輯運算。 << 左移算數邏輯都一樣 高位全去掉(符號位也不保留),低位補0. >>右移有點不同,算術的話高位會補符號位,10000001 >> 2 =11100001
原创 hdu acm 1051 貪心,排序,dilworth定理,最長遞減序列長度
dilworth 定理: 最小鏈劃分數 = 最大反鏈的長度。 於是先按照l 或者 w 排序, 再求最大遞減子序列的長度即可~ 要注意,第一次按照 l 排序時(按w 思路也一樣),如果出現l相同的情況, 那麼應該再在l相同的木頭之間
原创 1002. A+B for Polynomials (25)
http://pat.zju.edu.cn/contests/pat-a-practise/1002 題目本身簡單。。不過要注意:輸出的時候 如果合併後係數爲0 , 就不要輸出這項,還有就是係數保留一位小數。 #include<ios
原创 非虛函數的綁定
非虛函數不會佔用子類或者是對象中的內存,它的綁定由編譯器來完成。 如果是該函數和調用它的程序同步編譯,則在compile-time 綁定; 如果該函數是在動態庫裏面的,則在load-time綁定; 如果該函數是在靜態庫裏面的,則在link
原创 虛函數&繼承
新建一個子類時,分兩部分:1,繼承父類 2,修改(改虛函數表、增加新成員變量,若修改了非虛函數,還要爲子類函數綁定新入口地址)。 如下: class A { public: int a,b; void fun1(){...};//假
原创 函數的默認值+帶默認參數的函數
我們可以賦予函數參數默認值。所謂默認值就是在調用時,可以不寫某些參數的值,編譯器會自動把默認值傳遞給調用語句中。默認值可以在聲明或定義中設置;也可在聲明或定義時都設置,都設置時要求默認值是相同的。 關於默認值要注意幾點: 1.
原创 HDU ACM 1081 最大子矩陣問題
子矩陣肯定是1行,2行,……,n行的。 求出行數爲1的最大子矩陣的值,行數爲2的最大子矩陣的值,……,行數爲n時的最大子矩陣的值。 保存在數組sub_max中, 然後sub_max中的最大值就是最大子序列。 #include<iost
原创 HDU ACM 1052
數組T[] K[]分別表示田和king 的馬, 按從塊到慢進行排序。 然後從t=0 k=0 開始, 一直到k >= n爲止結束(t不用遍歷完的, 因爲後面幾匹最慢的是炮灰,和king比較快的馬比了)。 1,如果T[ t ] < K[ k
原创 HDU ACM 1061
水題,注意等於0的情況。 #include<iostream> using namespace std; int main() { int a[10][10] = {0}; int b[10] = {0}; for(int i =