Skip to content

Commit dfb7000

Browse files
committed
add max_sum_path
1 parent 67a8589 commit dfb7000

File tree

15 files changed

+99
-51
lines changed

15 files changed

+99
-51
lines changed

algorithm/etc/dp/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
],
1111
"files": {
1212
"fibonacci": "Fibonacci Sequence",
13-
"sliding_window": "Finding the largest sum of three contiguous number"
13+
"sliding_window": "Finding the largest sum of three contiguous number",
14+
"max_sum_path": "Finding the maximum sum in a path from (0, 0) to (N-1, M-1) when can only move to right or down"
1415
}
1516
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
tracer._print('values = [');
2+
for (var i = 0; i < D.length; i++) {
3+
tracer._print('&nbsp;&nbsp;&nbsp;&nbsp;[' + D[i].join(', ') + ']');
4+
}
5+
tracer._print(']');
6+
tracer._pace(200);
7+
var N = DP.length;
8+
var M = DP[0].length;
9+
for (var i = 0; i < N; i++) {
10+
for (var j = 0; j < M; j++) {
11+
tracer._sleep();
12+
if (i == 0 && j == 0) {
13+
tracer._select(i, j);
14+
DP[i][j] = D[i][j];
15+
tracer._deselect(i, j);
16+
} else if (i == 0) {
17+
tracer._select(i, j - 1);
18+
DP[i][j] = DP[i][j - 1] + D[i][j];
19+
tracer._deselect(i, j - 1);
20+
} else if (j == 0) {
21+
tracer._select(i - 1, j);
22+
DP[i][j] = DP[i - 1][j] + D[i][j];
23+
tracer._deselect(i - 1, j);
24+
} else {
25+
tracer._selectSet([{x: i, y: j - 1}, {x: i - 1, y: j}]);
26+
DP[i][j] = Math.max(DP[i][j - 1], DP[i - 1][j]) + D[i][j];
27+
tracer._deselectSet([{x: i, y: j - 1}, {x: i - 1, y: j}]);
28+
}
29+
tracer._notify(i, j);
30+
}
31+
}
32+
tracer._print('max = ' + DP[N - 1][M - 1]);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
var tracer = new Array2DTracer();
2+
var D = Array2D.createRandomData(5, 5, 1, 5);
3+
var DP = [];
4+
for (var i = 0; i < D.length; i++) {
5+
DP.push([]);
6+
for (var j = 0; j < D[i].length; j++) {
7+
DP[i].push(999);
8+
}
9+
}
10+
tracer.setData(DP);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
var tracer = new Array1DTracer();
2-
var D = tracer.createRandomData(20, -5, 5);
2+
var D = Array1D.createRandomData(20, -5, 5);
33
tracer.setData(D);

algorithm/graph_search/dfs/all_paths/data.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ var tracer = new GraphTracer();
66
[0, 0, 0, 0, 1],
77
[0, 0, 0, 0, 0]
88
];*/
9-
var G = tracer.createRandomData(5, .75);
9+
var G = Graph.createRandomData(5, .75);
1010
tracer.setData(G);

algorithm/graph_search/dfs/shortest_path/data.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ var tracer = new WeightedGraphTracer();
66
[0, 2, 0, 0, 1],
77
[0, 1, 3, 0, 0]
88
];*/
9-
var G = tracer.createRandomData(10, .3, 1, 9);
9+
var G = WeightedGraph.createRandomData(10, .3, 1, 9);
1010
tracer.setData(G);

algorithm/graph_search/dfs/weighted_graph/data.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ var tracer = new WeightedGraphTracer();
66
[0, 2, 0, 0, 1],
77
[0, 1, 3, 0, 0]
88
];*/
9-
var G = tracer.createRandomData(5, .5);
9+
var G = WeightedGraph.createRandomData(5, .5);
1010
tracer.setData(G);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
var tracer = new Array1DTracer();
2-
var D = tracer.createRandomData(15);
2+
var D = Array1D.createRandomData(15);
33
tracer.setData(D);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
var tracer = new Array1DTracer();
2-
var D = tracer.createRandomData(15);
2+
var D = Array1D.createRandomData(15);
33
tracer.setData(D);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
var tracer = new Array1DTracer();
2-
var D = tracer.createRandomData(15);
2+
var D = Array1D.createRandomData(15);
33
tracer.setData(D);

0 commit comments

Comments
 (0)