304 North Cardinal St.
Dorchester Center, MA 02124

# Maximize the cash when no two adjoining Array indices could be chosen

Given an array of dimension N, every index has Ok sum of money, the goal is to select the utmost sum of money from the array however the constraint is that no two adjoining indices could be chosen.

Examples:

Enter: N = 5, Ok = 10
Output: 30
Clarification: The attainable possibility is to select from the primary,
third and fifth homes which can end in 30.

Enter: N = 2, Ok = 12
Output: 12
Clarification: The one selections are to select
from the primary or second which can end in 12.

Strategy: The issue could be solved utilizing the next remark:

There could be two instances:

• Case 1 (N is odd): You’ll be able to both select 1, 3, 5, . . . or 2, 4, 6, . . . In first case all the time depend is yet another than the second so, you select first. Whole indices that may be chosen = (N+1)/2
• Case 2 (N is even): You’ll be able to both select 1, 3, . . . or 2, 4, . . . In each case all the time depend of parts is equal so you may select any. Whole indices chosen = N/2

Observe the steps to resolve this downside:

• Examine the parity of N:
• If N is odd, return (N+1)*Ok / 2
• Else, return N*Ok  / 2

Beneath is the implementation of the above strategy.

## C++

 ` `  `#embody ` `utilizing` `namespace` `std;` ` `  `int` `maximizeMoney(``int` `N, ``int` `Ok)` `{` `    ``if` `(N & 1)` `        ``return` `(N + 1) * Ok / 2;` `    ``else` `        ``return` `N * Ok / 2;` `}` ` `  `int` `fundamental()` `{` `    ``int` `N = 5, Ok = 10;` ` `  `    ` `    ``cout << maximizeMoney(N, Ok) << endl;` `    ``return` `0;` `}`

Time Complexity: O(1)
Auxiliary Area: O(1)