From 75986b0bd27d6781c8952a476fc5c329b0c7c629 Mon Sep 17 00:00:00 2001 From: Gidijala uday srinu <55196913+udaysrinu@users.noreply.github.com> Date: Thu, 7 Oct 2021 23:02:21 +0530 Subject: [PATCH 1/2] Dynamic programming questions Important and standard dynamic programming questions --- 0-1 Knapsack.cpp | 21 +++++++++++++++++++++ Edit distance.cpp | 21 +++++++++++++++++++++ Longest palindromic subsequence.cpp | 21 +++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 0-1 Knapsack.cpp create mode 100644 Edit distance.cpp create mode 100644 Longest palindromic subsequence.cpp diff --git a/0-1 Knapsack.cpp b/0-1 Knapsack.cpp new file mode 100644 index 0000000..6388125 --- /dev/null +++ b/0-1 Knapsack.cpp @@ -0,0 +1,21 @@ +int dp[1001][1001]; +int knap(vector &A, vector &B, int n,int C) +{ + if(n==0) + return 0; + if(dp[n][C]!=-1) + return dp[n][C]; + if(B[n-1]<=C) + { + return dp[n][C]=max(A[n-1]+knap(A,B,n-1,C-B[n-1]),knap(A,B,n-1,C)); + } + else + return dp[n][C]=knap(A,B,n-1,C); +} +int Solution::solve(vector &A, vector &B, int C) { + int n=A.size(); + for(int i=0;i<=n;i++) + for(int j=0;j<=C;j++) + dp[i][j]=-1; + return knap(A,B,n,C); +} \ No newline at end of file diff --git a/Edit distance.cpp b/Edit distance.cpp new file mode 100644 index 0000000..8b44be8 --- /dev/null +++ b/Edit distance.cpp @@ -0,0 +1,21 @@ +int Solution::minDistance(string A, string B) { + vector>t(B.size()+1,vector(A.size()+1,-1)); + int n=B.size(),m=A.size(); + for(int i=0;im) + return 0; + if(dp[n][m]!=-1) + return dp[n][m]; + if(A[n-1]==A[m-1]) + return dp[n][m]=2+solve1(A,n+1,m-1); + else + return dp[n][m]=max(solve1(A,n+1,m),solve1(A,n,m-1)); +} +int Solution::solve(string A) { + int n=A.length(),m=A.length(); + for(int i=0;i<=n;i++) + for(int j=0;j<=m;j++) + dp[i][j]=-1; + return solve1(A,1,m); +} \ No newline at end of file From aa86aecbb8e6a8cd912047c856908094ecb97cd8 Mon Sep 17 00:00:00 2001 From: Gidijala uday srinu <55196913+udaysrinu@users.noreply.github.com> Date: Thu, 7 Oct 2021 23:05:22 +0530 Subject: [PATCH 2/2] famous DP problem --- Longest increasing subsequence.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Longest increasing subsequence.cpp diff --git a/Longest increasing subsequence.cpp b/Longest increasing subsequence.cpp new file mode 100644 index 0000000..1c7e0e2 --- /dev/null +++ b/Longest increasing subsequence.cpp @@ -0,0 +1,19 @@ +int Solution::lis(const vector &A) { + int n=A.size(); + int ma=1; + if(n==1||n==0) + return n; + vectorinc(n,1); + for(int k=0;k