zoukankan      html  css  js  c++  java
  • Levenshtein Distance

    Levenshtein Distance

    AC_Code

     1 #include <bits/stdc++.h>
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <string>
     6 #include <cmath>
     7 #include <queue>
     8 #include <stack>
     9 #include <map>
    10 #include <set>
    11 #include <vector>
    12 using namespace std;
    13 typedef long long ll;
    14 string a,b;
    15 set<string>S;///set自动排序去重
    16 
    17 void del(string s){
    18     int n=s.length();
    19     if( n==1 ) return ;
    20     for(int i=0;i<n;i++){///delete第i位的字符
    21         string ss;
    22         ss.clear();
    23         for(int j=0;j<n;j++){
    24             if( j==i ) continue;
    25             ss.push_back(s[j]);
    26         }
    27         S.insert(ss);
    28     }
    29 }
    30 
    31 void add(){
    32     int m=a.length();
    33     int n=b.length();
    34     for(int i=0;i<=n;i++){///n个字符有(n+1)个空隙
    35         for(int j=0;j<m;j++){///在第i个空隙分别加a[j]
    36             string ss;
    37             ss.clear();
    38             for(int k=0;k<i;k++){
    39                 ss.push_back(b[k]);
    40             }
    41             ss.push_back(a[j]);
    42             for(int k=i;k<n;k++){
    43                 ss.push_back(b[k]);
    44             }
    45             S.insert(ss);
    46         }
    47     }
    48 }
    49 
    50 void change()
    51 {
    52     int m=a.length();
    53     int n=b.length();
    54     for(int i=0;i<n;i++){///把b中的第i个字符
    55         for(int j=0;j<m;j++){///换成a中的第j个字符
    56             string ss;
    57             ss.clear();
    58             for(int k=0;k<n;k++){
    59                 if( k==i ) ss.push_back(a[j]);
    60                 else ss.push_back(b[k]);
    61             }
    62             S.insert(ss);
    63         }
    64     }
    65 }
    66 
    67 
    68 int main()
    69 {
    70     getline(cin,a);
    71     getline(cin,b);
    72     del(b);
    73     add();
    74     change();
    75     S.erase(b);
    76     set<string>::iterator it;
    77     for(it=S.begin(); it!=S.end(); it++){
    78         cout<<(*it)<<endl;
    79     }
    80     return 0;
    81 }

     

  • 相关阅读:
    HUST 1017 Exact cover (Dancing links)
    HDU 1160 FatMouse's Speed (DP)
    HDU 1058 Humble Numbers (DP)
    Kubernetes(k8s)
    linux命令
    入侵检测系统
    lynis检测
    CPU死锁
    检测工具lynis
    Linux表面工作
  • 原文地址:https://www.cnblogs.com/wsy107316/p/12242333.html
Copyright © 2011-2022 走看看