題意:

給兩個長度以及他們的字串,求他們的Edit Distance

 

解法:

用Edit Distance

這邊是Bottom up的填表方法

 

程式碼

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MIN(x,y)(((x)<(y))?(x):(y))
#define INF 1<<29
int aLen,bLen;
char a[1001];
char b[1001];

int dp[1001][1001];

int findBU(int aLen,int bLen){
    int i,j;
    for(i=1;i<=aLen;++i)dp[i][0] = i;
    for(j=1;j<=bLen;++j)dp[0][j] = j;
    dp[0][0] = 0;

    for(i=1;i<=aLen;++i){
        for(j=1;j<=bLen;++j){
            if(a[i]==b[j])dp[i][j] = dp[i-1][j-1];
            else dp[i][j] = MIN(dp[i-1][j-1],MIN(dp[i-1][j],dp[i][j-1]))+1;
        }
    }

    return dp[aLen][bLen];
}


int main(){

    while(scanf("%d %s",&aLen,&a[1])!=EOF){
        scanf("%d %s",&bLen,&b[1]);
        printf("%d\n",findBU(aLen,bLen));
    }

    return 0;
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 alan790712 的頭像
    alan790712

    程式碼備份區

    alan790712 發表在 痞客邦 留言(0) 人氣()