- 浏览: 34141 次
-
最新评论
#include<iostream>
#include<string>
using namespace std;
#define MAX 1001
int nEditD[MAX][MAX];
void vInit(int nA,int nB);
void vGetEdit(string sA,string sB,int nA,int nB);
void vOut(int nA,int nB);
int min(int nA,int nB);
int get3Min(int nA,int nB,int nC);
int nDiff(char cA,char cB);
int main()
{
int nCase;
int nX,nY;
int i;
string sX,sY;
cin>>nCase;
for(i=1;i<=nCase;i++)
{
cin>>sX>>sY;
sX=" "+sX;
sY=" "+sY;
nX=sX.size()-1;
nY=sY.size()-1;
vInit(nX,nY);
vGetEdit(sX,sY,nX,nY);
vOut(nX,nY);
}
return 0;
}
void vInit(int nA,int nB)
{
int i,j;
for(i=0;i<=nA;i++)
{
nEditD[i][0]=i;
}
for(j=1;j<=nB;j++)
{
nEditD[0][j]=j;
}
}
void vGetEdit(string sA,string sB,int nA,int nB)
{
int i,j;
for(i=1;i<=nA;i++)
{
for(j=1;j<=nB;j++)
{
nEditD[i][j]=get3Min(nEditD[i-1][j]+1,nEditD[i][j-1]+1,nEditD[i-1][j-1]+nDiff(sA[i],sB[j])); }
}
}
void vOut(int nA,int nB)
{
cout<<nEditD[nA][nB]<<endl;
}
int min(int nA,int nB)
{
return (nA<nB?nA:nB);
}
int get3Min(int nA,int nB,int nC)
{
return(min(min(nA,nB),nC));
}
int nDiff(char cA,char cB)
{
return((cA==cB)?0:1);
}
#include<string>
using namespace std;
#define MAX 1001
int nEditD[MAX][MAX];
void vInit(int nA,int nB);
void vGetEdit(string sA,string sB,int nA,int nB);
void vOut(int nA,int nB);
int min(int nA,int nB);
int get3Min(int nA,int nB,int nC);
int nDiff(char cA,char cB);
int main()
{
int nCase;
int nX,nY;
int i;
string sX,sY;
cin>>nCase;
for(i=1;i<=nCase;i++)
{
cin>>sX>>sY;
sX=" "+sX;
sY=" "+sY;
nX=sX.size()-1;
nY=sY.size()-1;
vInit(nX,nY);
vGetEdit(sX,sY,nX,nY);
vOut(nX,nY);
}
return 0;
}
void vInit(int nA,int nB)
{
int i,j;
for(i=0;i<=nA;i++)
{
nEditD[i][0]=i;
}
for(j=1;j<=nB;j++)
{
nEditD[0][j]=j;
}
}
void vGetEdit(string sA,string sB,int nA,int nB)
{
int i,j;
for(i=1;i<=nA;i++)
{
for(j=1;j<=nB;j++)
{
nEditD[i][j]=get3Min(nEditD[i-1][j]+1,nEditD[i][j-1]+1,nEditD[i-1][j-1]+nDiff(sA[i],sB[j])); }
}
}
void vOut(int nA,int nB)
{
cout<<nEditD[nA][nB]<<endl;
}
int min(int nA,int nB)
{
return (nA<nB?nA:nB);
}
int get3Min(int nA,int nB,int nC)
{
return(min(min(nA,nB),nC));
}
int nDiff(char cA,char cB)
{
return((cA==cB)?0:1);
}
发表评论
-
最大子段和
2012-01-05 13:59 794给出N个数字, 计算出最大的子段和。 Input 第一行给 ... -
最长不下降子序列长度
2012-01-05 13:55 1356对于序列(1, 7, 3, 5, 9, 4,,有它的一些不下降 ... -
求两字符串匹配的最长子序列
2012-01-05 13:52 1032如果两种特征序列的公共子序列越长表示越接近,现在请你帮助计算出 ... -
Kruskal最小生成树
2011-12-08 14:26 719#include<iostream> #inclu ... -
prime
2011-12-01 20:09 627#include<iostream> using ... -
哈弗曼编码
2011-11-28 10:43 1#include<iostream> #defi ... -
哈弗曼编码
2011-11-28 10:42 557#include<iostream> #defi ... -
#贪心算法(零件加工)
2011-10-27 13:25 1013#include<stdio.h> #includ ... -
众数问题
2011-10-20 14:57 812#include <stdio.h> #inclu ... -
输油管道问题
2011-10-13 14:45 628#include <stdio.h> #inclu ... -
幂的精确求值
2011-09-22 15:07 477#include<iostream> using ... -
大数加法
2011-09-22 12:56 638#include<iostream> #incl ... -
三姐妹之出题
2011-09-15 14:15 701#include<iostream> #incl ... -
最大子段和问题(分治)(##)
2011-09-08 21:31 679#include<stdio.h> #defin ... -
最大子段和问题(O(N^2))
2011-09-08 15:04 625#include<stdio.h> int a[ ... -
最大子段和问题(O(N^3))
2011-09-08 14:45 499#include<stdio.h> int a[ ...
相关推荐
编辑距离问题-算法导论 在计算机科学中,编辑距离问题是指将一个字符串转换成另一个字符串所需的最少操作步骤数。这些操作可以是插入、删除、替换和复制字符。编辑距离问题是一种典型的动态规划问题。 动态规划是...
### 编辑距离问题解析 #### 一、问题定义与背景 编辑距离(Edit Distance),又称Levenshtein距离,是一种衡量两个字符串相似度的方法。它定义了将一个字符串转换成另一个字符串所需的最少单字符编辑操作次数。...
动态规划之编辑距离问题 编辑距离问题是计算机科学中一个经典问题,旨在寻找将一个字符串转换为另一个字符串所需的最少操作数。这个问题可以通过动态规划算法来解决,下面将对其进行详细的解释。 问题描述 编辑...
动态规划算法是解决编辑距离问题的首选方法,因为它的效率高且避免了重复计算。算法的核心是一个二维矩阵,通常称为DP表。矩阵的行和列分别对应字符串A和B的字符,矩阵的每个元素表示对应位置的两个字符之间的编辑...
### 编辑距离问题 #### 一、问题背景与定义 在计算机科学领域,编辑距离(Edit Distance)是一个衡量两个字符串相似度的重要概念。编辑距离指的是通过一系列预定义的操作(如插入、删除或替换字符)将一个字符串...
详细说明:此算法也是非常常用的算法之一,在这个算法中我们特别要明白编辑距离问题的实质所在.
编辑距离问题是一个经典的计算机科学问题,它涉及到字符串的相似度计算和序列的比较。这个问题的主要目标是找到将一个字符串转换成另一个字符串的最小操作序列,其中包括插入、删除、替换、互换(twiddle)和终止...
### 编辑距离问题解析与算法实现 #### 一、问题背景及定义 **编辑距离**(Edit Distance),也称为Levenshtein Distance,是一种衡量两个字符串相似度的方法,即通过最少的操作次数(如插入、删除或替换字符)将一个...
编辑距离问题是一个经典的计算机科学问题,它在字符串处理、生物信息学、文本比较等领域有着广泛的应用。该问题的定义是:计算两个字符串之间的最小操作序列(插入、删除、替换)以将一个字符串转换成另一个字符串。...
上述代码展示了如何使用C++实现动态规划解决最短编辑距离问题。在实际应用中,为了提高效率,还可以考虑使用位运算和预处理来优化空间复杂度。此外,了解并理解动态规划的基本思想和优化技巧,对解决其他类似问题也...
编辑距离问题,也被称为Levenshtein距离,是计算机科学中的一个重要概念,特别是在文本处理、信息检索和生物信息学等领域有着广泛的应用。该问题的基本思想是衡量两个字符串之间的相似度,通过计算将一个字符串转化...
Python 编辑距离问题是一个经典的计算机科学问题,它在文本处理、搜索引擎算法、生物信息学等领域有着广泛应用。编辑距离(Levenshtein Distance)是指通过插入、删除、替换操作将一个字符串转换为另一个字符串所需...
实现3-2编辑距离问题.cpp
这些问题是编辑距离问题、货物堆积问题、骑士周游问题、数组分割问题、资源分配问题以及最长上升子序列问题。我们将逐一深入探讨这些知识点。 1. **编辑距离问题**: 编辑距离(Levenshtein Distance)是衡量两个...
本文档主要介绍了动态规划算法在解决编辑距离问题中的应用。编辑距离是指将字符串A转换为字符串B所需的最少字符操作数。动态规划算法是解决这个问题的有效方法。 动态规划的基本思想是将待求解的问题分解成若干份的...
例如,通过对原始文本和译文的编辑距离进行比较,可以检测翻译中的拼写错误、术语不一致等问题,提高翻译质量。此外,编辑距离算法还可以应用在搜索引擎中,提供更准确的搜索建议,或者在数据输入验证时,帮助用户...
设A和B是2个字符串.要用最少的字符操作将字符串A转换为字符...将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B).试设计一个有效算法,对任给的2个字符串A和B,计算出他们的编辑距离d(A,B)
总的来说,编辑距离算法是理解和实现的重要工具,它能够帮助我们处理字符串的相似度问题,提高用户体验,特别是在搜索、纠错和自动建议等功能中。在分析`test`文件中的具体实现时,我们可以更深入地了解这个算法如何...
设A 和B 是2 个字符串。要用最少的字符操作将...将字符串A变换为字符串B 所用的最少字符操作数称为字符串A到B 的编辑距离,记为 d(A,B)。试设计一个有效算法,对任给的2 个字符串A和B,计算出它们的编辑距离d(A,B)。