Simple, Easy to understand, Recursive solution


#1

int f(vector A,string B,int n,int m,int i,int j,int k)
{
if(k==B.length())
return 1;
if(i+1<n&&A[i+1][j]==B[k])
{
if(f(A,B,n,m,i+1,j,k+1)==1)
return 1;
}
if(j+1<m&&A[i][j+1]==B[k])
{
if(f(A,B,n,m,i,j+1,k+1)==1)
return 1;
}
if(i-1>=0&&A[i-1][j]==B[k])
{
if(f(A,B,n,m,i-1,j,k+1)==1)
return 1;
}
if(j-1>=0&&A[i][j-1]==B[k])
{
if(f(A,B,n,m,i,j-1,k+1)==1)
return 1;
}
return 0;

}
int Solution::exist(vector &A, string B) {
int n=A.size();
int m=A[0].length();
for(int i=0;i<A.size();i++)
{
for(int j=0;j<A[i].length();j++)
{
if(A[i][j]==B[0])
{
if(f(A,B,n,m,i,j,1)==1)
return 1;
}
}
}
return 0;
}