小P尋寶記——好基友一起走

小P尋寶記——好基友一起走

Time Limit: 1000MS Memory limit: 65536K

題目描述

話說,上次小P到伊利哇呀國旅行得到了一批寶藏。他是相當開心啊,回來就告訴了他的好基友小鑫,於是他們又結伴去伊利哇呀國尋寶。
這次小P的尋寶之路可沒有那麼的輕鬆,他們走到了一個森林,小鑫一不小心被觸發了機關,被困在了一個大籠子裏面,籠子旁邊上有一道題目和一個密碼鎖,上面說只要解出此題輸入密碼即可救出被困人。小鑫不是很聰明,所以他做不出來,他知道小P很笨,更解不出來。所以他就讓小P獨自回去,不用管他。但是小P重情重義不會拋棄他離去。他說:“不,好基友一起走!”。於是就感動了上帝,上帝特派你來替他們解決問題。聰明的你要加油了啊!
題目描述:給你n種物品和一個體積爲v的包包。每種物品有無數種,體積是vi價值是wi。求出包包v所能裝的最大價值的東西。

輸入

多組輸入。第一行有兩個正整數n(0<n<=10000), v(0<v<= 10000)。接下來兩行每行有n個數字。第一行表示每種物品的價值wi(0<wi<100),第二行表示每種物品的體積vi(0<vi<100)。

輸出

輸出最多可以得到的價值。輸出結果救出小鑫。

示例輸入

5 20
1 2 3 4 5
2 6 3 5 4

示例輸出

25

提示

#include <stdio.h>
#include <string.h>
int w[10005]; //價值
int v[10005]; //體積
int dp[10005];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int N,V; //N 種 V 總體積
while(~scanf("%d%d",&N,&V))
{
for(int i=0;i<N;i++)
scanf("%d",&w[i]);
for( int i=0;i<N;i++)
scanf("%d",&v[i]);
memset(dp,0,sizeof(dp)); //dp數組清0
for(int i=1;i<=N;i++)
{
for(int j=v[i];j<=V;j++) //有剩餘體積
{
dp[j]=max(dp[j],dp[j-v[i]]+w[i]); //找最大價值
}
}
printf("%d\n",dp[V]);
}
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章