Skip to content

Instantly share code, notes, and snippets.

@occ
Forked from melisacakmak/gist:10751444
Last active August 29, 2015 13:59
Show Gist options
  • Save occ/10751747 to your computer and use it in GitHub Desktop.
Save occ/10751747 to your computer and use it in GitHub Desktop.
import java.util.ArrayList;
import java.util.Collections;
/**
* Created by melisa on 26.03.14.
*/
public class p18 {
public static void main(String[] args) {
int[][] input = new int[][]{
{75},
{95, 64},
{17, 47, 82},
{18, 35, 87, 10},
{20, 04, 82, 47, 65},
{19, 01, 23, 75, 03, 34},
{88, 02, 77, 73, 07, 63, 67},
{99, 65, 04, 28, 06, 16, 70, 92},
{41, 41, 26, 56, 83, 40, 80, 70, 33},
{41, 48, 72, 33, 47, 32, 37, 16, 94, 29},
{53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14},
{70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57},
{91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48},
{63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31},
{04, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 4, 23}};
ArrayList<Integer> sums = new ArrayList<Integer>();
int sum = 0;
for (int i=0; i<15; i++) {
sum = maxsumat(input.length, i);
}
System.out.println(Collections.max(sums));
}
public static int getNumberAt(int row, int col) {
if (col > row || col < 0 || row < 0) {
return -1;
} else return (row * (row + 1) / 2 + col);
}
public static int maxSumAt(int row, int col) {
int maxsum = 0;
if (row > 0 && col < row) {
int sum1 = maxSumAt(row - 1, col);
int sum2 = maxSumAt(row - 1, col - 1);
maxsum = Math.max(sum1, sum2) + getNumberAt(row, col);
} else if (row == 0)
maxsum = getNumberAt(row, col);
else maxsum = -1;
return maxsum;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment