Given a 2 x N grid of integer, A, choose numbers such that the sum of the numbers
is maximum and no two chosen numbers are adjacent horizontally, vertically or diagonally, and return it.
Note: You can choose more than 2 numbers.
Input Format:
The first and the only argument of input contains a 2d matrix, A.
Output Format:
Return an integer, representing the maximum possible sum.
Constraints:
1 <= N <= 20000
1 <= A[i] <= 2000
Example:
Input 1:
A = [ [1]
[2] ]
Output 1:
2
Explanation 1:
We will choose 2.
Input 2:
A = [ [1, 2, 3, 4]
[2, 3, 4, 5] ]
Output 2:
We will choose 3 and 5.
publicclassSolution {publicintadjacent(int[][] A) {if (A[0].length==1)returnMath.max(A[0][0],A[1][0]);int m =A[0].length;// 0th index bestint prev_max =Math.max(A[0][0],A[1][0]);// 1st index bestint curr_max =Math.max(prev_max,Math.max(A[0][1],A[1][1]));for (int j =2; j < m; j++) {int temp = curr_max; curr_max =Math.max(Math.max(A[0][j],A[1][j]) + prev_max, curr_max); prev_max = temp; }return curr_max; }}