第八周學習總結

2021-10-05 05:30:00 字數 728 閱讀 3150

這周依然在主攻dp演算法,而這週相對於前兩周不同的是,這周主要在講揹包問題。

揹包問題是dp演算法中乙個重點問題。她一共分為三種題型:01揹包問題,完全揹包問題和多重揹包問題。首先,01揹包問題是這三個問題中最簡單,也是最基礎的乙個。下面我會列舉乙個我認為非常有代表性,並且一看就懂的問題。也正是這個問題,讓我對揹包問題有了乙個初步的了解。

題目:乙個小偷面前有一堆(n個)財寶,每個財寶有重量w和價值v兩種屬性,而他的揹包只能攜帶一定重量的財寶,在已知所有財寶的重量和價值的情況下,如何選取財寶,可以最大限度的利用當前的揹包容量,取得最大價值的財寶(或求出能夠獲取財寶價值的最大值)。

分析:限定每個物品要麼拿(1個)要麼不拿(0個),這就是揹包問題的本質。

這個問題有兩個維度,乙個是當前物品i,另乙個是當前容量c,於是我們可以用f[n,c]來表示將n個物品放入容量為c的揹包可以得到的最大收益,而第i個物品無非拿與不拿兩種情況,因此可以表示為:

f[i][c] = max( f[i - 1][c], f[i - 1][c - w[i]] + v[i]。

同時,想讓此狀態方程成立需要條件,即w[i] <= c,否則f[i][c] = f[i - 1][c]。

通過這題,我也看出01揹包問題有時候也會有邊界,這就類似於之前的遞迴問題。所以在求出狀態轉移方程之後,還需要尋找有無邊界。

完全揹包問題我現在依然在攻克中,既然01揹包問題我已經攻克了,我相信完全揹包問題的攻克也只是時間問題。

加油吧,少年。你可以的!

第八周學習總結

q 教材例子2中system.currenttimemillers a q 教材例子2中iter.hasnext 和iter.next q 教材例子3中將linkedlist改為arraylist a 動手實踐了一下,發現兩種輸出結果是一樣的。陣列和鍊錶的區別 相同 兩種結構均可實現資料的順序儲存,...

第八周學習總結

這個作業屬於哪個課程 2020 2021資訊保安導論 這個作業要求在 2020 2021 1資訊保安專業導論第九周作業 這個作業的目標 1.了解設計方法的4個階段 2.區分物件導向設計和功能設計,了解它們的不同特點 3.了解強型別 資料型別的概念 作業正文 了解到物件導向的設計重點是確實問題中的物件...

第八周學習總結

鍊錶煉表是由若干個稱作節點的物件組成的一種資料結構,每個節點含有乙個資料和下乙個節點的引用 堆疊堆疊是一種 後進先出 的資料結構,只能在一端進行輸入或輸出資料的操作。1.stack泛型類建立乙個堆疊物件,堆疊物件常用方法 2.public e push e item 實現壓棧操作 3.public ...