不清楚你“没想通什么”。建议你搜索"动态规划(DP,dynamic programming)",它是解决问题的算法。
如果不理解什么是"编辑距离(Levenshtein distance)",也可以搜索。网上介绍编辑距离和动态规划的文章非常多,解释也很清楚。

解决方案 »

  1.   

    请写一个Windows表单(就是带有若干控件的窗口)程序,根据Levenshtein距离(编辑距离),计算出两个文件的差异。计算Levenshtein距离通常采用的自底向上动态编程算法,需要用到一个(n + 1) × (m + 1) 的矩阵,n和m分别是两个字符串的长度。这里有一个函数LevenshteinDistance的伪代码,传入参数是:字符串s及其长度m、字符串t及其长度n。该函数计算两者的Levenshtein距离。
    这个算法中,有一点自始至终保持不变:我们最少只需d[i,j]步操作即可以把(任意)初始的字符段s[1..i] 变换为t[1..j]。当算法执行结束后,数组右下方的元素就是最终结果。
      

  2.   

        class CompareString
        {
            public int Compare(string S, string D)
            {
                if (string.IsNullOrEmpty(S) || string.IsNullOrEmpty(D))
                    throw new Exception("String should not be empty.");
                int[,] array = new int[S.Length + 1, D.Length + 1];
                for (int i = 0; i <= S.Length; i++)
                    array[i, 0] = i;
                for (int i = 1; i <= D.Length; i++)
                    array[0, i] = i;
                for (int i = 1; i <= S.Length; i++)
                {
                    for (int j = 1; j <= D.Length; j++)
                    {
                        int c = S[i - 1] == D[j - 1] ? 0 : 1;
                        int n1 = array[i - 1, j] + 1;
                        int n2 = array[i - 1, j - 1] + c;
                        int n3 = array[i, j - 1] + 1;
                        int v = n1 < n2 ? n1 : n2;
                        array[i, j] = v < n3 ? v : n3;
                    }
                }
                return array[S.Length, D.Length];
            }
        }
      

  3.   

    你搜索"动态规划(DP,dynamic programming)",它是解决问题的算法。
    如果不理解什么是"编辑距离(Levenshtein distance)",也可以搜索。
      

  4.   

    感谢版主,我也搜索到答案了。
    至于是课后习题还是面试题,我真不想在此纠结。
    1、我可以拿出别人出面试题的照片
    2、即使是我拿的课后习题,我拿到这儿来问,有什么问题吗?
    3、我面试的,是实验室的工作内容,而我做asp.net时间长了,对算法确实不行了。而他们希望我转做别的语言,所以对算法有要求。