What wrong in my code.please reply
what error are u getting.
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int dp[2001][2001][6];
int countsub(int a[],int b[],int i,int j,int n,int m,int k){
if(i>=n||j>=m){
return 0;
}
if(dp[i][j][k]!=-1){
return dp[i][j][k];
}
int t=0;;
if(a[i]==b[j]){
t=1+(countsub(a,b,i+1,j+1,n,m,k));
}
else if(k>0){
t=max(t,max(1+countsub(a,b,i+1,j+1,n,m,k-1),max(countsub(a,b,i+1,j,n,m,k),countsub(a,b,i,j+1,n,m,k))));
}
else{
t=max(t,max (countsub(a,b,i+1,j,n,m,k),countsub(a,b,i,j+1,n,m,k)));
}
dp[i][j][k]=t;
return t;
}
int main(){
int n,m,k;
cin>>n>>m>>k;
int a[n];
int b[m];
memset(dp,-1,sizeof(dp));
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<m;i++){
cin>>b[i];
}
cout<<countsub(a,b,0,0,n,m,k);
}
Accepted Code.
You dont set multidimensional arrays that way for that memset is used and also ur dp table was small.
1 Like