字符串相似度问题

nandizhu 2009-09-02 10:11:47
一个字符串可以通过增加一个字符,删除一个字符,替换一个字符得到另外一个字符串,假设,我们把从字符串A转换成字符串B,前面3种操作所执行的最少次数称为AB直接的度,请写出程序求两字符串直接的度
如 abc adc 度为 1
ababababa babababab 度为 2
abcd acdb 度为2

我用动态规划写的,好像有问题,各位帮忙看下


int c[a.len+1][b.len+1];

c[i][j]=0;(0<=i<=a.len,0<=j<=b.len)//初始化,全部为0

for(int i=1;i<=a.len;++i)
{
for(int j=1;j<=b.len;++j)
{
if(a[i-1]==b[j-1]) c[i][j]=c[i-1][j-1];
else
{
c[i][j]=min(c[i-1][j],c[i][j-1],c[i-1][j-1])+1;
}
}
}

...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
unix229 2009-09-04
  • 打赏
  • 举报
回复
动态规划?看看
hxyokokok 2009-09-02
  • 打赏
  • 举报
回复
不应该是lcs,但是lz的代码确实是。。
nandizhu 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaoyu821120 的回复:]
lcs吗?网上有很多原代码的
[/Quote]


不是LCS
xiaoyu821120 2009-09-02
  • 打赏
  • 举报
回复
lcs吗?网上有很多原代码的
hhygcy 2009-09-02
  • 打赏
  • 举报
回复
初始化c有问题
要先把c[i][0] = i; c[0][j]=j;吧
teZrry 2009-09-02
  • 打赏
  • 举报
回复
编程之美上有这道题,动态规划解决,你的初始化有问题。
c[i][0]表示空串与0~(i-1)的串的相似度,故c[i][0]=i;
同理c[0][j]=j;
nandizhu 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hhygcy 的回复:]
初始化c有问题
要先把c[i][0] = i; c[0][j]=j;吧
[/Quote]

确实是初始化问题。。。谢谢了~~~~
nandizhu 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hxyokokok 的回复:]
不应该是lcs,但是lz的代码确实是。。
[/Quote]

那是你代码没认真看。。。。。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧