乾草出售

農民約翰面臨一個很可怕的事實,因爲防範失措他存儲的所有稻草給澳大利亞蟑螂喫光了,他將面臨沒有稻草餵養奶牛的局面。在奶牛斷糧之前,約翰拉着他的馬車到農民唐的農場中買一些稻草給奶牛過冬。已知約翰的馬車可以裝的下 C(1<=C<=5000)立方的稻草。
農民唐有 H(1<=H<=5000)捆體積不同的稻草可供購買,每一捆稻草有它自己的體積
(1<=Vi<=C)面對這些稻草約翰認真的計算如何充分利用馬車的空間購買儘量多的稻草給他的奶牛過冬。
現在給定馬車的最大容積 CC 和每一捆稻草的體積 Vi
,約翰如何在不超過馬車最大容積的情況下買到最大體積的稻草?他不可以把一捆稻草分開來買。

輸入格式
第一行兩個整數,分別爲 CC 和 HH。

第 2…H+12…H+1 行:每一行一個整數代表第 ii 捆稻草的體積 Vi
輸出格式
一個整數,爲約翰能買到的稻草的體積。

輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入
7 3
2
6
5
樣例輸出
7
01揹包模板
題意:
最大的容量可以買到稻草的體積;
套用模板即可

Accept Code :

#include <stdio.h>
#include <string.h>
#define max(a,b) a>b?a:b
int v[5010];
int dp[50100];
int main()
{
	int n,m,i,j,k;
	while(scanf("%d%d", &m,&n)!=EOF)
	{
		memset(dp,0,sizeof(dp));
		for(i=1; i<=n; i++)
			scanf("%d", &v[i]);
		for(i=1; i<=n; i++)
		{
			for(j=m; j>=v[i]; j--)
			{
				dp[j]=max(dp[j],dp[j-v[i]]+v[i]);
			}
		}
		printf("%d\n", dp[m]);
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章