Cod sursa(job #2073243)

Utilizator veronicamicleVeronica Micle veronicamicle Data 22 noiembrie 2017 21:07:23
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cmlsc.in");
ofstream g("cmlsc.out");
int s[1025][1025],v[1025],u[1025],m,n;
void recursiv (int i,int j)
{
    if(i>=1&&j>=1)
    {
        if(v[i]==u[j])
        {
            recursiv(i-1,j-1);
            cout<<v[i]<<" ";
        }
        else
        {
            if(s[i-1][j]>s[i][j-1])
                recursiv(i-1,j);
            else
                recursiv(i,j-1);
        }
    }
}
int main()
{
    f>>m>>n;
    for(int i=1;i<=m;i++)
        f>>v[i];
    for(int j=1;j<=n;j++)
        f>>u[j];
    for(int i=1;i<=m;i++)
    {
        for(int j=1;j<=n;j++)
           {
            if(v[i]==u[j])
            s[i][j]++;
            else
            {
                if(s[i-1][j]>s[i][j-1])
                    s[i][j]=s[i-1][j];
                else
                    s[i][j]=s[i][j-1];
            }
           }
    }

 recursiv(m,n);
    f.close();
    g.close();
    return 0;
}