poj 3628 01背包

bug:忘了给dp[0]赋值为1了

#include<stdio.h>
#include<string.h>
bool dp[20000000];
int h[22];
int main()
{
    int n,b,i,j,sum=0;
	scanf("%d%d",&n,&b);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&h[i]);
		sum+=h[i];
	}
	memset(dp,0,sizeof(dp));dp[0]=1;
	for(i=1;i<=n;i++)
	{
	    for(j=sum;j>=h[i];j--)
			if(dp[j-h[i]]) dp[j]=1;
	}
	for(i=b;i<=sum;i++)
		if(dp[i]) break;
	printf("%d\n",i-b);
}

  

posted @ 2011-11-17 04:32  Because Of You  Views(205)  Comments(0Edit  收藏  举报