this code is giving wrong output can you help by pointing out why it fails
this the code for memorized version of
qstn:http://www.geeksforgeeks.org/dynamic-programming-set-5-edit-distance/
#define lli long long int
lli arr[100][100];
char buf[1000],buf1[1000];
lli add=1,del=1,rep=1,k,k1;
lli oprtn(char *buff,char *buff1,lli m,lli n)
{
lli left,right,corner;
if(m==0 && n==0)
return 0;
if(m==0)
return n*add;
if(n==0)
return m*add;
if(arr[m][n]!=-1)
return arr[m][n];
if(arr[m-1][n]!=-1)
left=arr[m-1][n];
else
{
left=oprtn(buff,buff1,m-1,n)+add;
arr[m-1][n]=left;
}
if(arr[m][n-1]!=-1)
right=arr[m][n-1];
else
{
right=oprtn(buff,buff1,m,n-1)+del;
arr[m][n-1]=right;
}
if(arr[m-1][n-1]!=-1)
corner=arr[m-1][n-1];
else
{
corner=oprtn(buff,buff1,m-1,n-1)+rep*(buff[m-1]!=buff1[n-1]);
arr[m-1][n-1]=corner;
}
arr[m][n]=min(corner,min(left,right));
return arr[m][n];
return arr[m][n];
}
int main()
{
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
arr[i][j]=-1;
}
lli ans=oprtn(“abab”,acac,strlen(“abab”),strlen(“acac”));
cout<<ans;
}
output:
//ans==3