diff --git a/C++/Max Dot Product of Two Subsequences.cpp b/C++/Max Dot Product of Two Subsequences.cpp new file mode 100644 index 0000000..0cca83e --- /dev/null +++ b/C++/Max Dot Product of Two Subsequences.cpp @@ -0,0 +1,20 @@ +class Solution { +public: + int maxProd(vector& arr1, vector& arr2, int i1, int i2, vector>& dp) { + if (i1 == arr1.size() || i2 == arr2.size()) { + return -1e7; + } + if (dp[i1][i2] != -1) { + return dp[i1][i2]; + } + int cv = arr1[i1] * arr2[i2] ; + int a = cv + maxProd(arr1, arr2, i1 + 1, i2 + 1, dp); + int b = maxProd(arr1, arr2, i1, i2 + 1, dp); + int c = maxProd(arr1, arr2, i1 + 1, i2, dp); + return dp[i1][i2] = max(max(a, b), max(cv, c)); + } + int maxDotProduct(vector& nums1, vector& nums2) { + vector> dp(nums1.size(), vector(nums2.size(), -1)); + return maxProd(nums1, nums2, 0, 0, dp); + } +}; \ No newline at end of file diff --git a/C++/OptimizedPrimeFactors.cpp b/C++/OptimizedPrimeFactors.cpp new file mode 100644 index 0000000..cfaa5f8 --- /dev/null +++ b/C++/OptimizedPrimeFactors.cpp @@ -0,0 +1,24 @@ +#include +#include +#include +#include +using namespace std; + +int main() +{ + int n; + cout<<"Enter a number"<>n; + int l=0; + for(int i=2;i*i<=n; i++){ + if(n%i==0){ + while(n%i==0){ + cout<