Skip to main content

Goldmine

1. You are given a number n, representing the number of rows.

2. You are given a number m, representing the number of columns.

3. You are given n*m numbers, representing elements of 2d array a, which represents a gold mine.

4. You are standing in front of left wall and are supposed to dig to the right wall. You can start from 

     any row in the left wall.

5. You are allowed to move 1 cell right-up (d1), 1 cell right (d2) or 1 cell right-down(d3).

6. Each cell has a value that is the amount of gold available in the cell.

7. You are required to identify the maximum amount of gold that can be dug out from the mine.

Input Format

A number n

A number m

e11

e12..

e21

e22..

.. n * m number of elements

Output Format

An integer representing Maximum gold available.


Constraints

1 <= n <= 10^2

1 <= m <= 10^2

0 <= e1, e2, .. n * m elements <= 1000

Sample Input

6

6

0 1 4 2 8 2

4 3 6 5 0 4

1 2 4 1 4 6

2 0 7 3 2 2

3 1 5 9 2 4

2 7 0 8 5 1

Sample Output

33


Solution:

import java.io.*;

import java.util.*;


public class Main {


    public static void main(String[] args) throws Exception {

        // write your code here

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        int m = sc.nextInt();

        int[][] arr = new int[n][m];

        for(int i=0;i<n;i++)

            for(int j=0;j<m;j++)

                arr[i][j] = sc.nextInt();

        

        int dp[][] = new int[n][m];

        for(int i=0;i<n;i++)

            dp[i][0] = arr[i][0];

            

        for(int j=1;j<m;j++){

            for(int i=0;i<n;i++){

                int max = dp[i][j-1];

                if(i-1>=0)

                    max = Math.max(max,dp[i-1][j-1]);

                if(i+1<n)

                    max = Math.max(max,dp[i+1][j-1]);

                dp[i][j] = max + arr[i][j];

            }

        }

        

        int maxGold = 0;

        for(int i=0;i<n;i++){

            maxGold = Math.max(maxGold,dp[i][m-1]);

        }

        System.out.println(maxGold);

    }


}

Comments

Must Read:

RDBMS Data Definition Language | Create Sales_info table

  Write a query to create Sales_info with constraints mentioned. Refer the below schema  Result Description Summary of tests +------------------------------+ | 3 tests run / 3 test passed | +------------------------------+

Algorithm Analysis and Design Concepts Data Structure and Algorithms Post-Quiz

Algorithm Analysis and Design Concepts       Data Structure and Algorithms            Post-Quiz  

Algorithm Analysis and Design Concepts Analysis of Algorithms Post-Quiz

 Algorithm Analysis and Design Concepts       Analysis of Algorithms            Post-Quiz  

RDBMS Data Definition Language | Change the name of the table Sales Info

  RDBMS  Data Definition Language  Change the name of the table Sales Info Write an SQL statement to rename the table Sales Info to Sales_Information. (Hint: use alter command to rename the table name) Evaluation Result: Result Description Summary of tests +------------------------------+ | 1 tests run / 1 test passed | +------------------------------+

Mock 3 Slot3 - Quiz - 21st July Quiz Quiz

Mock 3 Slot3        Quiz - 21st July          Important Questions

Logic Development | Object Oriented Programming Post Quiz

 Logic Development | Object-Oriented Programming | Post Quiz

Java Flow Control And Functions If Else | Day 1

Problem: In computer programming, we use the if statement to control the flow of the program. For example, if a certain condition is met, then run a specific block of code. Otherwise, run another code. For example: class Main { public static void main(String[] args) { int number = 0; // checks if number is greater than 0 if (number > 0) { System.out.println("The number is positive."); } // checks if number is less than 0 else if (number < 0) { System.out.println("The number is negative."); } // if both condition is false else { System.out.println("The number is 0."); } } } Output The number is 0. In the above example, we are checking whether the  number is positive, negative, or zero . Here, we have two condition expressions: number > 0  - checks if the number is greater than 0 number < 0  - checks if the number is less than 0 Here, the value of the  number is 0 . So both th...

Programming using Java Hands On - Control Structures | Print Username

  Print Username Jeffy, who is going to complete the higher education in this year needs to create a simple application which accept the name of a person and welcome them with a message along with their name. She wants to read the data using the class "Scanner". Implement this scenario using Java. Sample Input 1:   Enter the name: Johson Sample Output 1: Welcome Johnson. Sample Input 2:   Enter the name: Stain Polson Sample Output 2: Welcome Stain Polson. Result Description Summary of tests *Note: All the test cases might not have same weightage +------------------------------+ | 2 tests run/ 2 tests passed | +------------------------------+

Logic Development | Object Oriented Programming Pre Quiz

 

Subscribe to Get's Answer by Email