Cod sursa(job #3285233)

Utilizator David_RadavoiRadavoi David Alexandru David_Radavoi Data 12 martie 2025 17:09:53
Problema Subsir Scor 0
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>
#include <stdlib.h>

#define MAXN 1000

int m[MAXN + 1][MAXN + 1];
char a[MAXN + 1];
char b[MAXN + 1];

int maxi(int a, int b, int c)
{
    if (a >= b && a >= c)
    {
        return a;
    }
    else if (b >= a && b >= c)
    {
        return b;
    }
    return c;
}

int main()
{
    FILE *fin, *fout;
    fin = fopen("subsir.in", "r");
    fout = fopen("subsir.out", "w");
    int N, M, i, j;
    char c;
    i = 0;
    c = fgetc(fin);
    while (c != '\n')
    {
        a[++i] = c;
        c = fgetc(fin);
    }
    N = i;
    i = 0;
    c = fgetc(fin);
    while (c != '\n' && c != EOF)
    {
        b[++i] = c;
        c = fgetc(fin);
    }
    M = i;
    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= M; j++)
        {
            if (a[i] == b[j])
            {
                m[i][j] = maxi(m[i - 1][j - 1] + 1, m[i - 1][j], m[i][j - 1]);
            }
            else
            {
                m[i][j] = maxi(m[i - 1][j - 1], m[i - 1][j], m[i][j - 1]);
            }
        }
    }
    fprintf(fout, "%d", m[N][M]);
    fclose(fin);
    fclose(fout);
    return 0;
}