- Related Questions & Answers
- Maximum subsequence sum such that no three are consecutive
- Maximum sum such that no two elements are adjacent in C++
- Maximum sum such that no two elements are adjacent Alternate Method in C++ program
- Maximum sum such that no two elements are adjacent - Set 2 in C++
- Program to print numbers such that no two consecutive numbers are co-prime and every three consecutive numbers are co-prime Using C++
- Maximum sum in circular array such that no two elements are adjacent in C++
- Maximum sum of nodes in Binary tree such that no two are adjacent in C++
- Maximum sum of nodes in Binary tree such that no two are adjacent using Dynamic Programming in C++ program
- Print n 0s and m 1s such that no two 0s and no three 1s are together in C Program
- Find minimum sum such that one of every three consecutive elements is taken in C++
- Maximum sum in a 2 x n grid such that no two elements are adjacent in C++
- Maximum sum of nodes in Binary tree such that no two are adjacent | Dynamic Programming In C++
- Maximum sum alternating subsequence in C++ program
- Maximum sum subarray such that start and end values are same in C++ Program
- Find three element from different three arrays such that that a + b + c = sum in Python

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

In this problem, we are given an array arr[] consisting of n positive integers. Our task is to create a program to find the maximum subsequence sum such that no three are consecutive.

**Problem Description** − Here, we need to find the sum of sequences created from the array such that there are no three consecutive elements.

**Consecutive elements of** an array are those elements that have followed the same order of index.

arr[0], arr[1], arr[2], …

**Let’s take an example to understand the problem,**

arr[] = {5, 9, 12, 15}

32

Sum = 5 + 12 + 15 = 32

A simple solution to the problem is by creating an auxiliary array to store the sum until the current index. And then find the sum and check the sum till the index by checking for consecutive sums.

For the first two sum values, sumVal[0] = arr[0] sumVal[1] = arr[0] + arr[1]

Then the third value to be considered cannot be directly considered. And for considering the sum, we will check for the conditions with the current three,If considering arr[i], increases the sum value, exclude arr[i−1] or arr[i−2].Else do not consider arr[i], the sum remains the same.

sum[i] = max(sum[i−3] + arr[i−1] + arr[i], sum[i−2] + arr[i], sum[i−1])

**Program to show the implementation of our solution,**

#include <iostream> using namespace std; int findMaxSubSeqSum(int arr[], int n) { int maxSumArr[n]; maxSumArr[0] = arr[0]; maxSumArr[1] = arr[0] + arr[1]; maxSumArr[2] = max(maxSumArr[1], max(arr[1] + arr[2], arr[0] + arr[2])); for (int i = 3; i < n; i++){ int sum1 = maxSumArr[i − 2] + arr[i]; int sum2 = arr[i] + arr[i − 1] + maxSumArr[i − 3]; maxSumArr[i] = max(max(maxSumArr[i − 1], sum1), sum2); } return maxSumArr[n − 1]; } int main() { int arr[] = { 5, 9, 12, 15 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The maximum subsequence sum such that no three are consecutive is "<<findMaxSubSeqSum(arr, n); return 0; }

The maximum subsequence sum such that no three are consecutive is 32

Advertisements