文章
10
粉丝
179
获赞
5
访问
31.8k
原理: 给出一个初始化矩阵,逐位比较两个字符串,待修改的矩阵对应为行,被比较的矩阵对应位列 若字符串对应的位相同,则让该矩阵位直接让这一位的矩阵的等于左上对角的值 否则,有三种情况,分别是: ①:等于上面矩阵位加一 ②:等于左上角矩阵位加一 ③:等于左边矩阵位加一 最后该矩阵位取上面三种情况中最小的一中。 最右下角的一位保存的就是字符串编辑距离 #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<<...
登录后发布评论
暂无评论,来抢沙发