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;i &A) { + int n=A.size(); + int ma=1; + if(n==1||n==0) + return n; + vectorinc(n,1); + for(int k=0;km) + 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