From b391751d12ab8e2fac5e442ca961864397684656 Mon Sep 17 00:00:00 2001 From: Suhail Malik Date: Sat, 10 Oct 2020 16:50:25 +0530 Subject: [PATCH] Added Minimum Cost Path Algorithm --- Dynamic-Programming/MinimumCostPath.js | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Dynamic-Programming/MinimumCostPath.js diff --git a/Dynamic-Programming/MinimumCostPath.js b/Dynamic-Programming/MinimumCostPath.js new file mode 100644 index 000000000..3936f0af7 --- /dev/null +++ b/Dynamic-Programming/MinimumCostPath.js @@ -0,0 +1,37 @@ +// youtube Link -> https://www.youtube.com/watch?v=lBRtnuxg-gU + +const minCostPath = (matrix) => { + /* + Find the min cost path from top-left to bottom-right in matrix + >>> minCostPath([[2, 1], [3, 1], [4, 2]]) + 6 + */ + const n = matrix.length + const m = matrix[0].length + + // Preprocessing first row + for (let i = 1; i < m; i++) { + matrix[0][i] += matrix[0][i - 1] + } + + // Preprocessing first column + for (let i = 1; i < n; i++) { + matrix[i][0] += matrix[i - 1][0] + } + + // Updating cost to current position + for (let i = 1; i < n; i++) { + for (let j = 1; j < m; j++) { + matrix[i][j] += Math.min(matrix[i - 1][j], matrix[i][j - 1]) + } + } + + return matrix[n - 1][m - 1] +} + +const main = () => { + console.log(minCostPath([[2, 1], [3, 1], [4, 2]])) + console.log(minCostPath([[2, 1, 4], [2, 1, 3], [3, 2, 1]])) +} + +main()