樸素2維無優化寫法:
#includeusingview codenamespace
std;
const
int maxn=1e3+5
;int
dp[maxn][maxn],v[maxn],w[maxn];
intmain()
}printf(
"%d\n
",dp[n][m]);
}
優化1維寫法:
關於優化是怎麼來的?首先為什麼第二個for迴圈改為從大到小?(前提:暴力樸素做法的時候無所謂for迴圈小->大還是大->小)因為這樣可以先更新後面的,這樣就可以避免把前面的給更新了。而第二個for迴圈》=v[i]是因為可以省去dp[i][j]=dp[i-1][j]這個操作步驟。
#includeusingview codenamespace
std;
const
int maxn=1e3+5
;int
dp[maxn],v[maxn],w[maxn];
intmain()
}printf(
"%d\n
",dp[m]);
}
揹包九講專題 混合揹包
不優化樸素解法,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...