diff --git a/chapter-8-recursion-and-Dynamic-Programming/8-5-Recursive-Multiply.cpp b/chapter-8-recursion-and-Dynamic-Programming/8-5-Recursive-Multiply.cpp index e7436b5..05236c8 100644 --- a/chapter-8-recursion-and-Dynamic-Programming/8-5-Recursive-Multiply.cpp +++ b/chapter-8-recursion-and-Dynamic-Programming/8-5-Recursive-Multiply.cpp @@ -1,40 +1,27 @@ +/* +* Author: Madhur Chauhan +* A simple log(min(a,b)) solution, but does not take more than 96 instructions +* Similar to binary exponentiation by exploiting bit pattern of multiplicand +*/ #include #include using namespace std; -int multiply(int a, int b, vector& dp) -{ - int bigger = a < b ? b:a; - int smaller = a > 1; //divide by 2 - - int side1 = multiply(s,bigger,dp); - int side2 = 0; - if (smaller%2) - side2 = side1+bigger; - else - side2 = side1; - - dp[smaller] = side2 +side1; - return side1+side2; -} +auto multiply=[](int a, int b){ + int big=a>b?a:b, small=a>=1; + } + return res; +}; int main() { int m = 7, n = 6; int smaller = m>n?n:m; int bigger = m>n?m:n; - std::vector dp(smaller+1,-1); + cout<