{"id":26222,"date":"2017-10-26T20:30:59","date_gmt":"2017-10-26T15:00:59","guid":{"rendered":"https:\/\/www.wikitechy.com\/technology\/?p=26222"},"modified":"2018-10-29T12:49:26","modified_gmt":"2018-10-29T07:19:26","slug":"java-programming-maximum-sum-increasing-subsequence","status":"publish","type":"post","link":"https:\/\/www.wikitechy.com\/technology\/java-programming-maximum-sum-increasing-subsequence\/","title":{"rendered":"Maximum Sum Increasing Subsequence"},"content":{"rendered":"<p>Given an <a href=\"https:\/\/www.wikitechy.com\/tutorials\/java\/how-to-sort-string-array-in-java\" target=\"_blank\" rel=\"noopener\">array<\/a> 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 <a href=\"https:\/\/www.wikitechy.com\/technology\/sorted-insert-circular-linked-list-2\/\" target=\"_blank\" rel=\"noopener\">sorted<\/a> in increasing order.<span id=\"more-19248\"><\/span><\/p>\n<p><strong>For example<\/strong>, if input is {1, 101, 2, 3, 100, 4, 5}, then output should be 106 (1 + 2 + 3 + 100), if the input array is {3, 4, 5, 10}, then output should be 22 (3 + 4 + 5 + 10) and if the input array is {10, 5, 4, 3}, then output should be 10<\/p>\n<h3 id=\"solution\"><span style=\"color: #003300;\"><strong>Solution:<\/strong><\/span><\/h3>\n<p>This problem is a variation of standard<strong> Longest Increasing\u00a0<\/strong><b>Subsequence<\/b>\u00a0(LIS) problem. We need a slight change in the <a href=\"https:\/\/www.wikitechy.com\/technology\/java-programming-binomial-coefficient\/\" target=\"_blank\" rel=\"noopener\">Dynamic Programming<\/a> solution of LIS problem. All we need to change is to use sum as a criteria instead of length of increasing subsequence.<\/p>\n<figure id=\"attachment_31635\" aria-describedby=\"caption-attachment-31635\" style=\"width: 570px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" class=\" wp-image-31635\" src=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/10\/longest-increasing-subsequence.png\" alt=\"Longest increasing subsequence\" width=\"570\" height=\"339\" srcset=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/10\/longest-increasing-subsequence.png 620w, https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/10\/longest-increasing-subsequence-300x179.png 300w\" sizes=\"(max-width: 570px) 100vw, 570px\" \/><figcaption id=\"caption-attachment-31635\" class=\"wp-caption-text\">Longest increasing subsequence<\/figcaption><\/figure>\n<h4 id=\"java-implementation\"><span style=\"color: #000080;\">Java\u00a0implementation:<\/span><\/h4>\n[pastacode lang=\u201djava\u201d manual=\u201dclass%20MSIS%0A%7B%0A%0A%20%20%0A%20%20%20%20static%20int%20maxSumIS(%20int%20arr%5B%5D%2C%20int%20n%20)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20int%20i%2C%20j%2C%20max%20%3D%200%3B%0A%20%20%20%20%20%20%20%20int%20msis%5B%5D%20%3D%20new%20int%5Bn%5D%3B%0A%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20for%20(%20i%20%3D%200%3B%20i%20%3C%20n%3B%20i%2B%2B%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20msis%5Bi%5D%20%3D%20arr%5Bi%5D%3B%0A%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20for%20(%20i%20%3D%201%3B%20i%20%3C%20n%3B%20i%2B%2B%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(%20j%20%3D%200%3B%20j%20%3C%20i%3B%20j%2B%2B%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%20arr%5Bi%5D%20%3E%20arr%5Bj%5D%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20msis%5Bi%5D%20%3C%20msis%5Bj%5D%20%2B%20arr%5Bi%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20msis%5Bi%5D%20%3D%20msis%5Bj%5D%20%2B%20arr%5Bi%5D%3B%0A%20%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20for%20(%20i%20%3D%200%3B%20i%20%3C%20n%3B%20i%2B%2B%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(%20max%20%3C%20msis%5Bi%5D%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20max%20%3D%20msis%5Bi%5D%3B%0A%20%0A%20%20%20%20%20%20%20%20return%20max%3B%0A%20%20%20%20%7D%0A%20%0A%0A%20%20%20%20public%20static%20void%20main(String%20args%5B%5D)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20int%20arr%5B%5D%20%3D%20new%20int%5B%5D%7B1%2C%20101%2C%202%2C%203%2C%20100%2C%204%2C%205%7D%3B%0A%20%20%20%20%20%20%20%20int%20n%20%3D%20arr.length%3B%0A%20%20%20%20%20%20%20%20System.out.println(%22Sum%20of%20maximum%20sum%20increasing%20%22%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%20subsequence%20is%20%22%2B%0A%20%20%20%20%20%20%20%20maxSumIS(%20arr%2C%20n%20)%20)%3B%0A%20%20%20%20%7D%0A%7D\u201d message=\u201dJava\u201d highlight=\u201d\u201d provider=\u201dmanual\u201d\/]\n<h3 id=\"output\"><span style=\"color: #008000;\">Output:<\/span><\/h3>\n<pre>Sum of maximum sum increasing subsequence is 106<\/pre>\n<p><span style=\"color: #003366;\"><strong>Time Complexity:<\/strong><\/span> <strong>O(n^2)<\/strong><\/p>\n[ad type=\u201dbanner\u201d]\n","protected":false},"excerpt":{"rendered":"<p>Java Programming &#8211; Maximum Sum Increasing Subsequence &#8211; Dynamic Programming Given an array of n positive integers. To find the sum of maximum sum <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69969,1,70145,2139],"tags":[72847,72842,72845,70483,72848,72840,72846,72987,72985,72843,72854,77933,72844,72850,72839,77939,77935,77934,77932,77928,77929,77931,77940,77936,77937,77927,72852,72855,72853,72851],"class_list":["post-26222","post","type-post","status-publish","format-standard","hentry","category-algorithm","category-coding","category-dynamic-programming","category-java","tag-concept-of-dynamic-programming","tag-define-dynamic-programming","tag-definition-of-dynamic-programming","tag-dynamic-programming","tag-dynamic-programming-code-generation-algorithm","tag-dynamic-programming-definition","tag-dynamic-programming-in-data-structure","tag-dynamic-programming-in-java","tag-dynamic-programming-java","tag-dynamic-programming-problems","tag-dynamic-programming-set-1","tag-dynamic-programming-set-15","tag-dynamic-programming-software","tag-explain-dynamic-programming","tag-how-to-solve-dynamic-programming-problems","tag-increasing-subsequence-with-maximum-sum-in-java-code","tag-largest-sum-non-contiguous-subarray","tag-maximum-increasing-subsequence","tag-maximum-subsequence-sum","tag-maximum-sum-alternating-subsequence","tag-maximum-sum-increasing-subsequence-dynamic-programming","tag-maximum-sum-increasing-subsequence-nlogn","tag-maximum-sum-subarray-divide-and-conquer-in-java-code","tag-maximum-sum-subarray-dynamic-programming","tag-maximum-sum-subsequence-dynamic-programming","tag-printing-maximum-sum-increasing-subsequence","tag-problems-on-dynamic-programming","tag-simple-dynamic-programming-example","tag-types-of-dynamic-programming","tag-youtube-dynamic-programming"],"_links":{"self":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/26222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/comments?post=26222"}],"version-history":[{"count":0,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/26222\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/media?parent=26222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/categories?post=26222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/tags?post=26222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}