摘要:sort函式在日常程式設計中,經常被用到;同時,對記憶體的初始化函式,經常用到fill,本節,我們以計算lis為例講解這兩個函式的應用。
例子:有一些老鼠,有x和y兩個屬性,現在要選擇乙個最大集合,其中從前到後,老鼠的x屬性依次遞減,y屬性依次遞增。
分析:如果我們先按照x屬性遞減排列,那麼形成乙個陣列,然後問題就轉化為求解這個陣列中y屬性遞增排列的最長字串,於是轉化為乙個動態規劃問題。
關鍵點2:在動態規劃的解法中,我們僅僅記錄了最長的集合長度,那麼如何將集合恢復出來?這裡,我們用到了「字首樹」的思想:在很多搜尋結構中,我們往往需要搜尋一種路徑,然而,從某個點開始的路徑可能有很多條,但是每個點的字首節點僅僅有乙個。在這種情況下,我們僅僅需要記錄某個節點的字首節點,然後就能恢復出來這條路徑。
寫這道題目的時候,犯下的錯誤:
sort函式的遞減排列;
memset函式,開始使用這個函式對int型別進行了非零的初始化,比如memset(len, 1, 12*4);想想這裡為什麼出錯?這個函式的定義式子是什麼樣的?
具體的演算法如下:
#include #include #include #include#include #include #include #include #include #include using namespace std;
struct mice
mice(int x1, int y1):x(x1), y(y1){}
};struct mycom
} if(len[i]>res)
} stacks;
int curindex=resindex;
while(curindex!=-1)
cout << res <
MYSQL 問題大集合
停止mysql服務 開始 所有應用 windows管理工具 服務 將mysql服務停止。或者直接搜尋 服務 解除安裝mysql server 控制面板 所有控制面板項 程式和功能 將mysql server解除安裝掉。將mysql安裝目錄下的mysql資料夾刪除 執行 regedit 檔案,開啟登錄...
計蒜客 最大集合
給定乙個 1 n1 n 的排列 a 1 a 2 a n 定義集合 s k 顯然對於任意的 k 1 nk 1 n,s k 都是有限集合。你能求出其中包含整數最多的 s k s k 的大小嗎?輸入格式 第一行包含乙個整數 nn。1 le n le 100000 1 n 100000 第二行包含 nn 個...
HDU1856(並查集求最大集合)
有比較說明一點經驗 求最大值有時候不需要把資料求出來後遍歷。注意 最大值的求解和比較的順序沒有關係,所以可以一邊求出資料,一邊進行比較。即用設定全域性變數maxp的方法解決 省去最後遍歷的步驟。include include include includeusing namespace std co...