From 86ba3cb224656b8d3e70e891f651dd6e234488e4 Mon Sep 17 00:00:00 2001 From: Sourav Sharma <51079951+neoneww@users.noreply.github.com> Date: Thu, 21 Oct 2021 14:23:46 +0530 Subject: [PATCH] Create mcm.cpp --- mcm.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 mcm.cpp diff --git a/mcm.cpp b/mcm.cpp new file mode 100644 index 0000000..8829a60 --- /dev/null +++ b/mcm.cpp @@ -0,0 +1,32 @@ +#include +using namespace std; + +int mcm_memo(vector &arr, int si, int ei, vector> &dp) +{ + if (ei - si == 1) + { + return dp[si][ei] = 0; + } + + if (dp[si][ei] != 0) + { + return dp[si][ei]; + } + + int minRes = (int)1e9; + for (int i = si + 1; i < ei; i++) + { + int leftRes = mcm_memo(arr, si, i, dp); + int rightRes = mcm_memo(arr, i, ei, dp); + + minRes = min(minRes, leftRes + arr[si] * arr[i] * arr[ei] + rightRes); + } + dp[si][ei] = minRes; + return minRes; +} + +int matrixMultiplication(vector &arr, int n) +{ + vector> dp(n, vector(n , 0)); + return mcm_memo(arr, 0, n-1, dp); +}