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); }