SDUTOJ 2825 小P尋寶記——粗心的基友 01揹包
阿新 • • 發佈:2019-02-13
小P尋寶記——粗心的基友
Time Limit: 1000MS Memory limit: 65536K
題目描述
這對好基友他們在經歷無數的艱難險阻後,終於找到了寶藏。無奈的是這一對好基友竟然是一樣的粗心,又忘記了帶一個大一點的包包,可惜啊、、選擇又出現了啊、、 已知包的體積是v,每種寶貝只有一種,寶貝的體積是pi,價值是wi。求出這對粗心的基友可以最多帶走價值多少的寶藏。輸入
輸入資料有多組。 每組第一行有兩個正整數n(n <= 10000)和v(v <= 10000)分別表示n種寶貝和包的體積。 接下來n行,每行有兩個正整數vi, wi。 分別表示每種寶藏的體積vi (vi<=1000),價值wi(wi<=1000)。輸出
這對基友所能帶走的最多的寶藏。示例輸入
5 10
1 5
2 4
3 3
4 2
5 1
示例輸出
14
提示
來源
xfl簡單01揹包:
#include <stdio.h> #include <string.h> #define max(a,b) (a)>(b)?a:b int w[10010],v[10010],dp[10010]; int main() { int n,m; while(~scanf("%d%d",&n,&m)) { for(int i = 1; i <= n; i++) { scanf("%d%d",&w[i],&v[i]); } memset(dp,0,sizeof(dp)); for(int i = 1; i <= n; i++) { for(int j = m; j >= w[i]; j--) { dp[j] = max(dp[j],dp[j - w[i]] + v[i]); } } printf("%d\n",dp[m]); } return 0; }