0% found this document useful (0 votes)
9 views6 pages

Labdaa

Uploaded by

danish mahajan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views6 pages

Labdaa

Uploaded by

danish mahajan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Lab

Program 1: Longest common Subsequence

#include <iostream>

#include<vector>

using namespace std;

void lcs(string s1, string s2) {

int n = s1.size();

int m = s2.size();

vector < vector < int >> dp(n + 1, vector < int > (m + 1, 0));

for (int i = 0; i <= n; i++) {

dp[i][0] = 0;

for (int i = 0; i <= m; i++) {

dp[0][i] = 0;

for (int ind1 = 1; ind1 <= n; ind1++) {

for (int ind2 = 1; ind2 <= m; ind2++) {

if (s1[ind1 - 1] == s2[ind2 - 1])

dp[ind1][ind2] = 1 + dp[ind1 - 1][ind2 - 1];

else

dp[ind1][ind2] = 0 + max(dp[ind1 - 1][ind2], dp[ind1][ind2 - 1]);

}
int len = dp[n][m];

int i = n;

int j = m;

int index = len - 1;

string str = "";

for (int k = 1; k <= len; k++) {

str += "$"; // dummy string

while (i > 0 && j > 0) {

if (s1[i - 1] == s2[j - 1]) {

str[index] = s1[i - 1];

index--;

i--;

j--;

} else if (s1[i - 1] > s2[j - 1]) {

i--;

} else j--;

cout << str;

int main() {

string s1,s2;
cout << "Enter the first string : ";

cin >> s1;

cout << "Enter the second string : ";

cin >> s2;

cout << "The Longest Common Subsequence is ";

lcs(s1, s2);

OUTPUT:
Program 2: Matrix Chain Multiplication

#include <iostream>

#include<vector>

using namespace std;

int f(vector<int>& arr, int i, int j, vector<vector<int>>& dp){

if(i == j)

return 0;

if(dp[i][j]!=-1)

return dp[i][j];

int mini = INT_MAX;

for(int k = i; k<= j-1; k++){

int ans = f(arr,i,k,dp) + f(arr, k+1,j,dp) + arr[i-1]*arr[k]*arr[j];

mini = min(mini,ans);

return mini;

int matrixMultiplication(vector<int>& arr, int N){

vector<vector<int>> dp(N,vector<int>(N,-1));
int i =1;

int j = N-1;

return f(arr,i,j,dp);

int main() {

int n;

cout << "Enter the size of the array : ";

cin >> n;

vector<int> arr(n);

for(int i = 0;i < n;i++) {

cin >> arr[i];

cout<<"The minimum number of operations is "<<matrixMultiplication(arr,n);

return 0;

}
OUTPUT:

You might also like