From 7252525cd080d729eb187ab3a580e63714e8f41d Mon Sep 17 00:00:00 2001 From: pkdism Date: Sun, 27 Nov 2016 21:51:40 +0530 Subject: [PATCH] Add 0-1 Knapsack and LCS problem --- Dynamic Programming/Knapsack.cpp | 41 +++++++++++++++++++ .../Longest Common Subsequence.cpp | 27 ++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 Dynamic Programming/Knapsack.cpp create mode 100644 Dynamic Programming/Longest Common Subsequence.cpp diff --git a/Dynamic Programming/Knapsack.cpp b/Dynamic Programming/Knapsack.cpp new file mode 100644 index 000000000..a06d042f8 --- /dev/null +++ b/Dynamic Programming/Knapsack.cpp @@ -0,0 +1,41 @@ +//0-1 Knapsack problem - Dynamic programming +#include +using namespace std; +int Knapsack(int capacity,int n,int weight[],int value[]){ + int res[n+1][capacity+1]; + for (int i = 0; i < n+1; ++i) + { + for (int j = 0; j < capacity+1; ++j) + { + if(i==0||j==0) + res[i][j] = 0; + else if(weight[i-1]<=j) + res[i][j] = max(value[i-1]+res[i-1][j-weight[i-1]], res[i-1][j]); + else + res[i][j] = res[i-1][j]; + } + } + return res[n][capacity]; +} +int main(int argc, char const *argv[]) +{ + int n; + cout<<"Enter number of items: "; + cin>>n; + int weight[n], value[n]; + cout<<"Enter weights: "; + for (int i = 0; i < n; ++i) + { + cin>>weight[i]; + } + cout<<"Enter values: "; + for (int i = 0; i < n; ++i) + { + cin>>value[i]; + } + int capacity; + cout<<"Enter capacity: "; + cin>>capacity; + cout< +using namespace std; +int lcs(string a, string b){ + int m = a.length(), n = b.length(); + int res[m+1][n+1]; + for (int i = 0; i < m+1; ++i) + { + for (int j = 0; j < n+1; ++j) + { + if(i==0||j==0) + res[i][j] = 0; + else if(a[i-1]==b[j-1]) + res[i][j] = 1 + res[i-1][j-1]; + else + res[i][j] = max(res[i-1][j], res[i][j-1]); + } + } + return res[m][n]; +} +int main(int argc, char const *argv[]) +{ + string a,b; + cin>>a>>b; + cout<