package com.interview.dynamic;
/**
* Problem Statement:
*
* Given an array of n positive integers. Write a program to find the sum of maximum sum subsequence of the given array
* such that the integers in the subsequence are in increasing order.
*
*
* Video: https://youtu.be/99ssGWhLPUE
*
* Reference:
* http://www.geeksforgeeks.org/dynamic-programming-set-14-maximum-sum-increasing-subsequence/
*/
public class MaximumSumSubsequence {
public int maxSum(int arr[]){
int T[] = new int[arr.length];
for (int i = 0; i < T.length; i++) {
T[i] = arr[i];
}
for(int i=1; i < T.length; i++){
for(int j = 0; j < i; j++){
if(arr[j] < arr[i]){
T[i] = Math.max(T[i], T[j] + arr[i]);
}
}
}
int max = T[0];
for (int i=1; i < T.length; i++){
if(T[i] > max){
max = T[i];
}
}
return max;
}
public static void main(String args[]){
MaximumSumSubsequence mss = new MaximumSumSubsequence();
int arr[] = {1, 101, 10, 2, 3, 100,4};
int r = mss.maxSum(arr);
System.out.print(r);
}
}