zoukankan      html  css  js  c++  java
  • 11.编辑距离

     时间复杂度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 }
  • 相关阅读:
    阅读笔记03
    第十三周总结
    阅读笔记02
    第十二周总结
    第十一周总结
    阅读笔记01
    阅读笔记3
    第十一周总结
    阅读笔记
    HDFS-学习总结
  • 原文地址:https://www.cnblogs.com/fx1998/p/12836816.html
Copyright © 2011-2022 走看看