# PBinfo #2528 – LungimeSubsirComunMaximal – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

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

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
#define Nmax 1005
using namespace std;
ifstream fin("lungimesubsircomunmaximal.in");
ofstream fout("lungimesubsircomunmaximal.out");
char C1[Nmax], C2[Nmax];
int N, M;
int dp[Nmax][Nmax];
int main()
{
    fin >> (C1 + 1) >> (C2 + 1);
    N = strlen(C1 + 1);
    M = strlen(C2 + 1);
    for(int i = 1; i <= N; i++)
        for(int j = 1; j <= M; j++)
            if(C1[i] == C2[j])
                dp[i][j] = 1 + dp[i - 1][j - 1];
            else
                dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
    fout << dp[N][M] << "\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2528)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2528/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2528/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
