fbpx

Problema #2528 – LungimeSubsirComunMaximal – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dau două șiruri de caractere, litere mici ale alfabetului englez. Să se determine lungimea celui mai lung subșir comun al lor.

Date de intrare

Fișierul de intrare lungimesubsircomunmaximal.in conține cele două șiruri de caractere, unul pe prima linie, unul pe cea de-a doua.

Date de ieșire

Fișierul de ieșire lungimesubsircomunmaximal.out va conține pe prima linie numărul L, reprezentând lungimea subșirului comun maximal al celor două cuvinte.

Restricții și precizări

  • 1 ≤ lungimea unui șir ≤ 1000

Exemplu

lungimesubsircomunmaximal.in

aaabcd
agahbdert

lungimesubsircomunmaximal.out

4
#include <bits/stdc++.h>

using namespace std;

ifstream cin("lungimesubsircomunmaximal.in");
ofstream cout("lungimesubsircomunmaximal.out");

int n , m , cnt;
char a[1001] , b[1001] , rez[1001];
int d[1001][1001];

int main()
{
    cin >> a >> b;
    n = strlen(a);
    m = strlen(b);

    for(int i = 1 ; i <= n ; i++)
        for(int j = 1 ; j <= m ; j++)
            if(a[i - 1] == b[j - 1]) d[i][j] = d[i - 1][j - 1] + 1;
            else d[i][j] = max(d[i - 1][j] , d[i][j - 1]);

    cout << d[n][m];
}
Comentarii

S-ar putea sa iti placa