揹包九講專題 01揹包

2022-05-04 08:51:11 字數 668 閱讀 7588

樸素2維無優化寫法:

#includeusing

namespace

std;

const

int maxn=1e3+5

;int

dp[maxn][maxn],v[maxn],w[maxn];

intmain()

}printf(

"%d\n

",dp[n][m]);

}

view code

優化1維寫法:

關於優化是怎麼來的?首先為什麼第二個for迴圈改為從大到小?(前提:暴力樸素做法的時候無所謂for迴圈小->大還是大->小)因為這樣可以先更新後面的,這樣就可以避免把前面的給更新了。而第二個for迴圈》=v[i]是因為可以省去dp[i][j]=dp[i-1][j]這個操作步驟。

#includeusing

namespace

std;

const

int maxn=1e3+5

;int

dp[maxn],v[maxn],w[maxn];

intmain()

}printf(

"%d\n

",dp[m]);

}

view code

揹包九講專題 混合揹包

不優化樸素解法,01揹包看出s 1,完全揹包看成s inf,再跑多重揹包 時間複雜度高,3層for迴圈 includeusing namespace std const int maxn 1e3 5 int dp maxn intv maxn w maxn s maxn intmain for in...

DP 揹包專題 揹包九講

這段時間看了 揹包九講 在hust vjudge上找到了乙個題單,挑選了其中16道題集中做了下,選題全部是hdu上的題,大多是簡單題。目前做了點小總結,大概提了下每道題的思路重點部分,希望以後回看回想時能有幫助。題單 hdu 1059 hdu 1114 hdu 1171 hdu 1203 hdu 1...

揹包九講之 01揹包

01揹包是最基礎的揹包問題,其中01代表的就是第i個物品的選或不選,在此先設v i 為體積,w i 為價值。很顯然,我們可以使用二位陣列dp i j 來表示前i個物品在揹包容量為j的時候可存放的最大價值。首先dp 0 0 0是很顯然的。而計算dp i j 時,存在01兩種情況 選或不選第i件物品。1...