POJ 1159 LCS 黑书练习题

来源:互联网 发布:淘宝卖手机需要3c 编辑:程序博客网 时间:2024/05/21 22:33
//使用short能过,使用int会超内存,公共个数总共也就5000,所以short是可行的 #include<iostream>using namespace std;char x[5005];char y[5005];short c[5005][5005];int len;int i,j; int comlen;void lcs(){    for(i=1;i<=len;i++)        c[i][0]=0;    for(j=1;j<=len;j++)        c[0][j]=0;    for(i=1;i<=len;i++)       for(j=1;j<=len;j++){           if(x[i]==y[j])               c[i][j]=c[i-1][j-1]+1;           else if(c[i-1][j]>=c[i][j-1])               c[i][j]=c[i-1][j];           else               c[i][j]=c[i][j-1];        }    comlen=c[len][len];}int main(){    while(scanf("%d%s",&len,x+1)!=EOF){        //将x逆序赋值给y         for(i=1;i<=len;i++){            y[len-i+1]=x[i];        }        lcs();        cout<<len-comlen<<endl;    }    return 0;}

原创粉丝点击