/// 112 年工科賽第 2 題 /// 最小編輯距離 /// 漆家豪 於海青資訊科 2024/2/8 using System; class EditDistance { static int minDistance(string word1, string word2) { int m = word1.Length , n = word2.Length , i , j , cost; int[,] dp = new int[m + 1, n + 1]; // 初始化第一列和第一行 for (i = 0; i <= m; i++) dp[i, 0] = i; for (i = 0; i <= n; i++) dp[0, i] = i; // 填充動態規劃表格 for (i = 1; i <= m; i++) { for (j = 1; j <= n; j++) { cost = (word1[i - 1] == word2[j - 1]) ? 0 : 2; dp[i, j] = Math.Min(Math.Min(dp[i - 1, j] + 1, dp[i, j - 1] + 1), dp[i - 1, j - 1] + cost); } } // 返回最終結果 return dp[m, n]; } static void Main() { string word1 = Console.ReadLine(); string word2 = Console.ReadLine(); int result = minDistance(word1, word2); Console.WriteLine(result); } }