#include <stdio.h>
#include <stdlib.h>
int minValue(int a, int b, int c)
{
int min = ((a < b) ? a : b) < c ? ((a < b) ? a : b) : c;
return min;
}
int CalculateStringDistance(char* strA, int pABegin, int pAEnd, char* strB, int pBBegin, int pBEnd)
{
if(pABegin > pAEnd)
{
return 0;
}
else
{
return pBEnd - pBBegin + 1;
}
if(pBBegin > pBEnd)
{
if(pABegin > pAEnd)
{
return 0;
}
else
{
return pAEnd - pABegin + 1;
}
}
if(strA[pABegin] == strB[pBBegin])
{
return CalculateStringDistance(strA, pABegin + 1, pAEnd, strB, pBBegin + 1, pBEnd);
}
else
{
int t1 = CalculateStringDistance(strA, pABegin, pAEnd, strB, pBBegin + 1, pBEnd);
int t2 = CalculateStringDistance(strA, pABegin + 1, pAEnd, strB, pBBegin, pBEnd);
int t3 = CalculateStringDistance(strA, pABegin + 1, pAEnd, strB, pBBegin + 1, pBEnd);
return minValue(t1, t2, t3) + 1;
}
}
int main()
{
char * strA = "abcdefg";
char * strB = "abcdef";
int distance = CalculateStringDistance(strA, 1, 7, strB, 1, 6);
//int m = minValue(1, 2, 3);
printf("min = %d\n",distance);
return 0;
}