I wrote the code below for kordered LCS program and I am an error heap space.
import java.util.Scanner;
import java.lang.Math;
public class Main {
public static long korderedLCS(int[] a,int[]b,int i,int j,int k,long[][][] dp) {
if (a.length==i||b.length==j) {
return 0;
}
if (dp[i][j][k]!=-1) {
return dp[i][j][k];
}
long res=0;
if(a[i]==b[j]) {
res=1+korderedLCS(a,b,i+1,j+1,k,dp);
}else{
if(k>0){
res=1+korderedLCS(a,b,i+1,j+1,k-1,dp);
}
res=Math.max(res,korderedLCS(a,b,i+1,j,k,dp));
res=Math.max(res,korderedLCS(a,b,i,j+1,k,dp));
}
dp[i][j][k]=res;
return res;
}
public static void main(String args[]) {
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
int m = scn.nextInt();
int k = scn.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++){
a[i] = scn.nextInt();
}
int[] b = new int[n];
for(int i=0;i<m;i++){
b[i] = scn.nextInt();
}
long[][][] dp = new long[n+1][m+1][k+1];
System.out.print(korderedLCS(a,b,0,0,k,dp));
}
}