字符串的距离 version2.0
字符串的距离 version2.0
version1.0: http://www.cnblogs.com/Coder816/p/4155466.html
算法参考于:http://blog.csdn.net/acdreamers/article/details/15502107
看了一遍,没有看懂,先做个记录。代码如下:
/** * @author nlee * @version 2:33:44 PM Dec 18, 2014 */ package test.algorithm.DistanceOfStrings;import java.io.*;
public class DistanceOfStrings
{
public static void main(String[] args)
{
String astr = "";
String bstr = "";
int k = 0;
int astrlen = 0;
int bstrlen = 0;
int[][] tdarr;
char[] aArr, bArr;BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try
{
astr = br.readLine();
bstr = br.readLine();
k = Integer.parseInt(br.readLine());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}aArr = astr.toCharArray();
bArr = bstr.toCharArray();astrlen = astr.length();
bstrlen = bstr.length();tdarr = new int[astrlen + 1][bstrlen + 1];
for (int i = 1; i <= astrlen; i++)
{
tdarr[i][0] = i * k;
}for (int i = 1; i <= bstrlen; i++)
{
tdarr[0][i] = i * k;
}for (int i = 0; i <= astrlen; i++)
{
System.out.print("-------- ");
for (int j = 0; j <= bstrlen; j++)
{
System.out.print(tdarr[i][j] + " ");
}
System.out.println();
}System.out.println();
for (int i = 1; i <= astrlen; i++)
{
for (int j = 1; j <= bstrlen; j++)
{
tdarr[i][j] = Math.min(tdarr[i - 1][j - 1]
+ Math.abs(aArr[i - 1] - bArr[j - 1]),
Math.min(tdarr[i][j - 1], tdarr[i - 1][j]) + k);
}
}for (int i = 0; i <= astrlen; i++)
{
System.out.print("======== ");
for (int j = 0; j <= bstrlen; j++)
{
System.out.print(tdarr[i][j] + " ");
}
System.out.println();
}
System.out.println(tdarr[astrlen][bstrlen]);
}
}

浙公网安备 33010602011771号