I'm getting runtime error (SIGSEGV) for the following code:
Code:
#include<stdio.h>
#include <string.h>
int lcs( char *A, char *B, int m, int n ){
int L[m+1][n+1];
int i, j;
for (i=0; i<=m; i++) {
for (j=0; j<=n; j++) {
if (i == 0 || j == 0)
L[i][j] = 0;
else if (A[i-1] == B[j-1])
L[i][j] = L[i-1][j-1] + 1;
else
L[i][j] = max(L[i-1][j], L[i][j-1]);
}
}
return L[m][n];
}
int max(int p, int r){
return (p > r)? p : r;
}
int main(){
int t;
scanf("%d", &t);
while(t--){
char X[25005]; char Y[25005];
scanf("%s%s", X,Y);
int len1 = strlen(X);
int len2 = strlen(Y);
int z = lcs(X,Y,len1,len2);
if(z == len1 || z == len2)printf("YES\n");
else printf("NO\n");
}
return 0;
}
What can be the reason?