HDU 2546 飯卡 (01揹包)
阿新 • • 發佈:2019-01-21
題意分析:01揹包
AC_CODE
int n; int v[1002] , money; int dp[1002]; int main() { while(cin >> n && n) { int i , j , a, sum = 0; for(i = 1;i <= n;i++) { scanf("%d",&v[i]); } scanf("%d",&money); if(money < 5) { cout << money << endl; continue; } memset(dp , 0 , sizeof(dp)); sort(v + 1 , v + 1 + n); for(i = 1;i < n;i++) for(j = (money - 5);j >= v[i];j--) dp[j] = max(dp[j] , dp[j - v[i]] + v[i]); cout << money - v[n] - dp[money - 5] << endl; } return 0; }