fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n, W;
  6. cout << "Masukkan jumlah item: ";
  7. cin >> n;
  8. cout << "Masukkan kapasitas tas: ";
  9. cin >> W;
  10.  
  11. vector<int> nilai(n), berat(n);
  12. cout << "Masukkan nilai dan berat tiap item (nilai berat):\n";
  13. for (int i = 0; i < n; i++) cin >> nilai[i] >> berat[i];
  14.  
  15. vector<int> dp(W + 1, 0);
  16.  
  17. // Proses knapsack dengan DP (1D)
  18. for (int i = 0; i < n; i++)
  19. for (int j = W; j >= berat[i]; j--)
  20. dp[j] = max(dp[j], dp[j - berat[i]] + nilai[i]);
  21.  
  22. cout << "\nNilai maksimum yang dapat dibawa = " << dp[W] << endl;
  23. return 0;
  24. }
  25.  
Success #stdin #stdout 0.01s 5284KB
stdin
5
5 4 7 8 10
10 5 7 12 8
20
stdout
Masukkan jumlah item: Masukkan kapasitas tas: Masukkan nilai dan berat tiap item (nilai berat):

Nilai maksimum yang dapat dibawa = 10