HDU 2546 飯卡……(01揹包+條件)
阿新 • • 發佈:2019-01-27
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main() { int i, j, temp, v[1005], n, m, dp[1005]; while(~scanf("%d", &n), n) { memset(dp, 0, sizeof(dp)); for(i=0;i<n;i++) scanf("%d", &v[i]); sort(v, v+n); scanf("%d", &m); if(m<5) { printf("%d\n", m); continue ; } m-=5; for(i=0;i<n-1;i++) for(j=m;j>=v[i];j--) dp[j]=max(dp[j], dp[j-v[i]]+v[i]); printf("%d\n", m+5-dp[m]-v[n-1]); } return 0; }