Sunday, 19 July 2020

LightOJ 1004 - Monkey Banana Problem solution in C++

Problem link: 1004 - Monkey Banana Problem


N.B: This is an iterative DP solution. Please try at least 1 hour yourself before seeing other's solution. Happy coding!  



  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4.    int cs;
  5.    cin >> cs;
  6.    for(int t = 1; t <= cs; t++) {
  7.       int n;
  8.       cin >> n;
  9.       long long int arr[205][105] = {0}, sum[205][105] = {0};
  10.       for(int i = 1; i <= n; i++) {
  11.          for(int j = 1; j <= i; j++)
  12.             cin >> arr[i][j];
  13.       }
  14.       int r = n;
  15.       for(int i = n + 1; i <= 2 * n - 1; i++) {
  16.          for(int j = 1; j <= r - 1; j++)
  17.             cin >> arr[i][j];
  18.          r--;
  19.       }
  20.       sum[1][1] = arr[1][1];
  21.       for(int i = 2; i <= n; i++) {
  22.          for(int j = 1; j <= i; j++) {
  23.             if(== 1) sum[i][j] = sum[- 1][j] + arr[i][j];
  24.             if(== i) sum[i][j] = sum[- 1][- 1] + arr[i][j];
  25.             else sum[i][j] = max(sum[- 1][- 1], sum[- 1][j]) + arr[i][j];
  26.          }
  27.       }
  28.       int s = n;
  29.       for(int i = n + 1; i <= 2 * n - 1; i++) {
  30.          for(int j = 1; j <= s - 1; j++)
  31.             sum[i][j] = max(sum[- 1][j], sum[- 1][+ 1]) + arr[i][j];
  32.          s--;
  33.       }
  34.       cout << "Case " << t << ": " << sum[2 * n - 1][1] << endl;
  35.    }
  36.    return 0;
  37. }
  38.  


No comments:

Post a Comment

LightOJ 1082 - Array Queries solution in c++

Problem link:  1082 - Array Queries N.B: This is a segment tree problem. If you do not know about segment tree, spend some time to learn it ...