您的位置:首页 > 其它

poj 3356 AGTC dp 最短编辑距离

2013-04-14 19:39 204 查看
这个题目没什么好说的了
算法导论上有原题,然后注意的就是初始化的问题,我wa了,还有就是多组测试数据

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int inf=99999999;
const int maxn=1111;
int n,m;
char a[maxn],b[maxn];
int dp[maxn][maxn];
int main()
{
while(scanf("%d %s %d
%s",&n,&a[1],&m,&b[1])!=EOF)
{

dp[1][1]=1-(a[1]==b[1]);

for(int i=1;i<=n;i++)

dp[i][0]=i;

for(int i=1;i<=m;i++)

dp[0][i]=i;
for(int
i=1;i<=n;i++)
for(int
j=1;j<=m;j++)
{

dp[i][j]=inf;

dp[i][j]=min(dp[i][j],dp[i-1][j-1]+1-(a[i]==b[j]));

dp[i][j]=min(dp[i][j],dp[i][j-1]+1);

dp[i][j]=min(dp[i][j],dp[i-1][j]+1);
}
//
printf("%d\n",dp[2][0]);

printf("%d\n",dp
[m]);

memset(dp,0,sizeof(dp));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: