文章

10

粉丝

179

获赞

5

访问

27.2k

头像
计算字符串编辑距离通解方法

原理:
给出一个初始化矩阵,逐位比较两个字符串,待修改的矩阵对应为行,被比较的矩阵对应位列
若字符串对应的位相同,则让该矩阵位直接让这一位的矩阵的等于左上对角的值
否则,有三种情况,分别是:
①:等于上面矩阵位加一
②:等于左上角矩阵位加一
③:等于左边矩阵位加一
最后该矩阵位取上面三种情况中最小的一中。
最右下角的一位保存的就是字符串编辑距离

#include <bits/stdc++.h>
using namespace std; 
typedef long long ll;
const int INF=1e9;

const int maxn=1e7+10;
int N=0,M=0,K=0,Q=0,n=0,m=0,a=0,b=0,c=0;
string str,stra,strb,strc;
int x,y;
ll sum=0,ksum=0,cnt;
int dp[1001][1001];
bool flag=true;

int main(){
    
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t=0,t1=0,t2=0,t3=0;
    cin>>stra>>strb;
    int lena=stra.length();
    int lenb=strb.length();
    
    for(int i=1;i<=lena;i++) dp[i][0]=i;//初始化矩阵的第0列
    for(int i=1;i<=lenb;i++) dp[0][i]=i;//初始化矩阵的第0行
    
//    for(int i=0;i<=lena;i++){ //输出起始矩阵,调试用
//        for(int j=0;j<=lenb;j++){
//            cout<<dp[i][j]<<" ";
//        }
//        cout<<endl;
//    }
//    cout<<...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发