Cod sursa(job #1371429)

Utilizator TrascaAndreiTrasca Andrei TrascaAndrei Data 3 martie 2015 21:27:17
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include<fstream>
#include<string.h>

using namespace std;

ifstream fin("siruri2.in");
ofstream fout("siruri2.out");

char s1[500],s2[500];
int NrMin[501][501];
int m,n,cost;

int ld(char s[],char t[])
{
    int i, j;
    for (i=0; i<n; i++) NrMin[i][m]=n-i;
    for (j=0; j<m; j++) NrMin[n][j]=m-j;
    for (i=n-1; i>=0; i--)
            for (j=m-1; j>=0; j--)
            if (s1[i]==s2[j]) NrMin[i][j]=NrMin[i+1][j+1];
                else
                {
                NrMin[i][j]=1+NrMin[i+1][j+1];
                if (NrMin[i][j]>1+NrMin[i+1][j])NrMin[i][j]=1+NrMin[i+1][j];
                if (NrMin[i][j]>1+NrMin[i][j+1])NrMin[i][j]=1+NrMin[i][j+1];
                }
    /*int i,j;
    for(i=0;i<=m;i++)
        d[i][0]=i;
    for(j=0;j<=n;j++)
        d[0][j]=j;
    for(j=1;j<=n;j++)
        for(i=1;i<=m;i++)
        {
            if(s[i]==t[i])
                d[i][j]=d[i+1][j+1];
            else
            {
                d[i][j]=d[i-1][j-1]+1;
                d[i][j]=min(d[i][j],d[i-1][j]+1);
                d[i][j]=min(d[i][j],d[i][j-1]+1);
            }
        }
        for(i=0;i<=m;i++)
    {
        for(j=0;j<=n;j++)
            fout<<d[i][j]<<" ";
        fout<<'\n';
    }*/
    return NrMin[0][0];
}

int main()
{
    fin.get(s1,500);
    fin.get();
    int i,j;
    fin.get(s2,500);
    m=strlen(s1);
    n=strlen(s2);
    strlwr(s1);
    strlwr(s2);
    fout<<ld(s1,s2);
    return 0;
}