Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java levenshtien距离算法中的错误返回_Java - Fatal编程技术网

Java levenshtien距离算法中的错误返回

Java levenshtien距离算法中的错误返回,java,Java,这是动态规划策略中的levenshtien算法。在我的代码中,当str1要转换为str2时必须更改。插入1个字符需要2个成本,删除1个字符需要1个成本。代码示例必须打印2但打印1。为什么?感谢您的帮助 public class Distance { static int min(int x,int y) { if (x < y ) return x; else return y; } static int editDistD

这是动态规划策略中的levenshtien算法。在我的代码中,当str1要转换为str2时必须更改。插入1个字符需要2个成本,删除1个字符需要1个成本。代码示例必须打印2但打印1。为什么?感谢您的帮助

public class Distance {
    static int min(int x,int y)
    {
        if (x < y ) return x;
        else return y;
    }

    static int editDistDP(String str1, String str2, int m, int n)
    {
        int dp[][] = new int[m+1][n+1];

        for (int i=0; i<=m; i++)
        {
            for (int j=0; j<=n; j++)
            {
                if (i==0)
                    dp[i][j] = j;  // Min. operations = j

                else if (j==0)
                    dp[i][j] = i; // Min. operations = i

                else if (str1.charAt(i-1) == str2.charAt(j-1))
                    dp[i][j] = dp[i-1][j-1];

                else
                    dp[i][j] = min(dp[i][j-1] + 2,  // Insert
                            dp[i-1][j] + 1);  // Remove
            }
        }

        return dp[m][n];
    }

    public static void main(String args[])
    {
        String str1 = "pple";
        String str2 = "apple";
        System.out.println( editDistDP( str1 , str2 , str1.length(), str2.length()) );
    }
}
公共类距离{
静态整数最小值(整数x,整数y)
{
如果(x对于(inti=0;i使用调试器查找它),我最近学习了动态编程,这有点复杂