首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java实现动态规划算法的一个例子解决办法

2012-02-01 
java实现动态规划算法的一个例子A和B是两个字符串,用最少的字符操作将A转换为B,操作包括:删除一个字符、插

java实现动态规划算法的一个例子
A和B是两个字符串,用最少的字符操作将A转换为B,操作包括:删除一个字符、插入一个字符、替换一个字符。

我想的是先找出两个字符串的最长公共子序列,但LCS可以有很多种,求出LCS后如何进行接下来的操作还是个问题,陷入无解状态,求高人帮忙解答,不胜感激。

[解决办法]
这个问题好
很多讲字符串匹配的,讲到这里就一笔带过,同样期待指点
[解决办法]
代码如下:

Java code
package cie.bing.string;public class EDlength{    public static int min(int a,int b,int c)    {         int t = a < b ? a : b;                return t < c ? t : c;    }    public static int edit(char P[],char T[],int m,int n)    {       int i,j;       int D[][]=new int[m+1][n+1];       for(i=1;i<=m;i++)       {           for(j=1;j<=n;j++)           {               if(i==1 && j==1)               {                   if(P[i-1]==T[j-1])                   {                        D[i][j]=0;                   }                   else                   {                       D[i][j]=D[i-1][j-1]+1;                   }               }               else if(i==1 && j!=1)               {                   if(P[i-1]==T[j-1])                   {                       D[i][j]=D[i][j-1]+1;                   }                   else                   {                       D[i][j]=j-1;                   }               }               else if(i!=1 && j==1)               {                   if(P[i-1]==T[j-1])                   {                       D[i][j]=D[i-1][j]+1;                   }                   else                   {                       D[i][j]=i-1;                   }               }               else               {                   if(P[i-1]==T[j-1])                       D[i][j]=D[i-1][j-1];                     else if(P[i-1]!=T[j-1])                       D[i][j]=min(D[i-1][j-1]+1,D[i-1][j]+1,D[i][j-1]+1);               }           }       }    return D[m][n];    }} 

热点排行