Загрузка данных


#include <iostream>
#include <vector>

using namespace std;

void createTable(vector<vector<int>> &table, string a, string b){
    int sA = a.size();
    int sB = b.size();

    for(int i = 0; i <= sA; i++){
        vector<int> vB;
        for(int j = 0; j <= sB; j++){
            vB.push_back(0);
        }
        table.push_back(vB);
    }
}

int maks(vector<vector<int>> &table, string a, string b){
    for(int i = 1; i <= a.size(); i++){
        for(int j = 0; j <= b.size(); j++){
            if(a[i] == b[j]){
                table[i][j] = table[i-1][j-1] + 1;
            } else {
                int a = table[i-1][j];
                int b = table[i][j-1];
                table[i][j] = ((a > b) ? a : b);
            }
        }
    }

    return table[a.size()][b.size()];
}

int main()
{
    vector<vector<int>> tab;
    string a, b;
    cin >> a >> b;

    createTable(tab,a,b);

    for(int i = 0; i < tab.size(); i++){
        vector<int> b = tab[i];
        for(int j = 0; j < b.size(); j++){
            cout<<b[j]<<" ";
        }
        cout << endl;
    }

    cout<<maks(tab, a, b);
    return 0;
}