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