编程之美223页的题目。
如果他们的第一个字符相同,那么计算接下来的字符串的距离。
如果他们的第一个字符不同,那么
1、删除a的第一个字符,计算a接下来的字符串和b的距离
2、删除b的第一个字符,计算b接下来的字符串和a的距离
3、修改a的第一个字符为b的第一个字符,计算a接下来的字符串和b接下来的字符串距离
4、修改b的第一个字符为a的第一个字符,计算a接下来的字符串和b接下来的字符串距离
5、添加a的第一个字符到b的开头部分,计算a接下来的字符串和b的距离
6、添加b的第一个字符到a的开头部分,计算a和b接下来的部分的距离
我们并不关心修改、添加、删除之后,得到的字符串是什么。仅仅关心这个距离是多少。那么上面可以总结为:
一步修改之后,计算a[2-a.len]和b[1-b.len]的距离
一步修改之后,计算a[1-a.len]和b[2-b.len]的距离
一步修改之后,计算a[2-a.len]和b[2-b.len]的距离
于是可以有递归程序了。
递归程序写的时候会重复计算一些内容,可以用打表的方式记录已经计算过的内容。防止重复计算。