fork download
  1. #include <iostream>
  2. #define INF 100000000
  3. using namespace std;
  4.  
  5. int arr[100][2], sumOfValues, n, dp[100][10000];
  6.  
  7. int solve(int index, int currentSum){
  8. if(index == n){
  9. if(currentSum == sumOfValues) return 0;
  10. else return -INF;
  11. }
  12. if(dp[index][currentSum] != -1) return dp[index][currentSum];
  13. int v1 = solve(index+1, currentSum + arr[index][1]) + arr[index][0]; //take current element
  14. int v2 = solve(index+1, currentSum); //do not take current element
  15. return dp[index][currentSum] = max(v1, v2);
  16. }
  17.  
  18. int main() {
  19. n = 5;
  20. sumOfValues = 6;
  21. arr[0][0] = 3;arr[0][1] = 3;
  22. arr[1][0] = 4;arr[1][1] = 3;
  23. arr[2][0] = 3;arr[2][1] = 2;
  24. arr[3][0] = 2;arr[3][1] = 2;
  25. arr[4][0] = 2;arr[4][1] = 1;
  26. for(int i = 0;i < 100;i++) for(int j = 0;j < 10000;j++) dp[i][j] = -1;
  27. cout << solve(0, 0) << endl;
  28. return 0;
  29. }
Success #stdin #stdout 0.01s 7364KB
stdin
Standard input is empty
stdout
9