class Main {
int collectCoin(int coin[][]) {
int[][] dpArray = new int[coin.length][coin[0].length];
for (int i=0; i<coin.length; ++i) {
for (int j=0; j<coin[i].length; ++j) {
int coinCollect = 0;
if (i>0 && j>0) {
coinCollect += Math.max(dpArray[i-1][j], dpArray[i][j-1]);
if (dpArray[i-1][j] > dpArray[i][j-1]) coinCollect+=dpArray[i-1][j];
} else if (i > 0) {
coinCollect += dpArray[i-1][j];
} else if (j > 0) {
coinCollect += dpArray[i][j-1];
}
coinCollect += coin[i][j];
dpArray[i][j] = coinCollect;
}
}
return dpArray[coin.length-1][coin[0].length-1];
}
public static void main(String[] args) {
int[][] coin = {
{0,0,0,0,1,0},
{0,1,0,1,0,0},
{0,0,0,1,0,1},
{0,0,1,0,0,1},
{1,0,0,0,1,0}
};
collectCoin(coin);
}
}