首页 > 其他 > 详细

11.编辑距离

时间:2020-07-03 22:35:44      阅读:46      评论:0      收藏:0      [点我收藏+]

技术分享图片

技术分享图片

 时间复杂度1000 * 1000 * 100

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 15, M = 1010;
 4 int n, m;
 5 char str[M][N];
 6 int dp[N][N];
 7 int edit_distance(char str[], char s[]) {
 8     int la = strlen(str + 1), lb = strlen(s + 1);
 9     for (int i = 0; i <= lb; i++) {
10         dp[0][i] = i;
11     }
12     for (int i = 0; i <= la; i++) {
13         dp[i][0] = i;
14     }
15     for (int i = 1; i <= la; i++) {
16         for (int j = 1; j <= lb; j++) {
17             dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);
18             dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + (str[i] != s[j]));
19         }
20     }
21     return dp[la][lb];
22 }
23 int main() {
24     cin >> n >> m;
25     for (int i = 1; i <= n; i++) {
26         cin >> str[i] + 1;
27     }
28     while (m--) {
29         char s[N];
30         int limit;
31         cin >> s + 1 >> limit;
32         int cnt = 0;
33         for (int i = 1; i <= n; i++) {
34             if (edit_distance(str[i], s) <= limit) {
35                 cnt++;
36             }
37         }
38         cout << cnt << endl;
39     }
40     return 0;
41 }

 

11.编辑距离

原文:https://www.cnblogs.com/fx1998/p/12836816.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!