投稿  收藏 

题目信息

题目类型
初赛
题目年份
2023
题目题型
综合题
关 键 词
编辑距离

题目题干

第 20 题
  1. (编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。
    1. #include <iostream> 
    2. #include <string> 
    3. #include <vector> 
    4. using namespace std; 
    5. int min(int x, int y, int z) { 
    6.     return min(min(x, y), z); 
    7. int edit_dist_dp(string str1, string str2) { 
    8.     int m = str1.length(); 
    9.     int n = str2.length(); 
    10.     vector<vector<int>> dp(m + 1, vector<int>(n + 1)); 
    11.     for (int i = 0; i <= m; i++) { 
    12.         for (int j = 0; j <= n; j++) { 
    13.             if (i == 0) 
    14.                 dp[i][j] = ①; 
    15.             else if (j == 0) 
    16.                 dp[i][j] = ②; 
    17.             else if (③) 
    18.                 dp[i][j] = ④; 
    19.             else 
    20.                 dp[i][j] = 1 + min(dp[i][j - 1], dp[i - 1][j], ⑤); 
    21.         } 
    22.     } 
    23.     return dp[m][n]; 
    24. int main() { 
    25.     string str1, str2; 
    26.     cin >> str1 >> str2; 
    27.     cout << "Mininum number of operation:" << edit_dist_dp(str1, str2) << endl; 
    28.     return 0; 

1①处应填( )
2②处应填( )
3③处应填( )
4④处应填( )
5⑤处应填( )
1.
 A. j
 B. i
 C. m
 D. n
2.
 A. j
 B. i
 C. m
 D. n
3.
 A. str1[i-1]==str2[j-1]
 B. str1[i]==str2[j]
 C. str1[i-1]!=str2[j-1]
 D. str1[i]!=str2[j]
4.
 A. dp[i-1][j-1]+1
 B. dp[i-1][j-1]
 C. dp[i-1][j]
 D. dp[i][j-1]
5.
 A. dp[i][j] + 1
 B. dp[i-1][j-1]+1
 C. dp[i-1][j-1]
 D. dp[i][j]

答案解析

相关题目

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!
  • 温馨提示:本文属于积分文章,需要充值获得积分或升级VIP会员,也可在会员中心投稿获取。

猜你喜欢