mN[3][2] =
new
Node(4,8);mN[3][3] =
new
Node(3,2);//check it!mN[3][4] =
new
Node(4,2);mN[3][5] =
new
Node(0,3);
// the 5-th row
mN[4][0] =
new
Node(1,10);mN[4][1] =
new
Node(2,4);mN[4][2] =
new
Node(9,7);mN[4][3] =
new
Node(5,11);mN[4][4] =
new
Node(1,3);mN[4][5] =
new
Node(0,4);
// the 6-th row
mN[5][0] =
new
Node(8,0);mN[5][1] =
new
Node(5,0);mN[5][2] =
new
Node(15,0);mN[5][3] =
new
Node(4,0);mN[5][4] =
new
Node(10,0);mN[5][5] =
new
Node(0,0);}
// number of cheapest paths public
int
numberOfPaths(){mN[0][0].entry= 0;
for
(
int
i=1; i<n; i++){mN[0][i].entry=mN[0][i-1].entry+mN[0][i-1].x;
mN[i][0].entry=mN[i-1][0].y+mN[i-1][0].entry;
}
for
(
int
i=1; i<n; i++){
for
(
int
j=1; j<n; j++){
int
x =mN[i-1][j].entry+mN[i-1][j].y;
int
y =mN[i][j-1].entry+mN[i][j-1].x;
mN[i][j].entry= Math.
min
(x,y);}}printPrice();
return
mN[n-1][n-1].entry;
}
// Print matrix of prices public
void
printPrice(){
for
(
int
i=0; i<mN.length; i++){
for
(
int
j=0; j<mN.length; j++){
System.
out
.print(mN[i][j].entry+" ");
}System.
out
.println();}System.
out
.println("----------------------");}
// one of the cheapest paths public
void
printPath(){String p ="("+n+","+n+")";
int
i =n-1, j =n-1;
while
(i>0 || j>0){
int
x =mN[i-1][j].entry+mN[i-1][j].y;
if
(mN[i][j].entry== x) i--;
else
j--;p = p +"->("+(i+1)+","+(j+1)+")";
}System.
out
.println("\none of the cheapest paths \n"+p);}
Leave a Comment