Sunteți pe pagina 1din 2

#include <iostream>

#include <fstream>
int v[10000],n,i,L[1000],max,mx,k,t;
void main(){
fstream f(“subsir.txt”,ios::in);
for(i=1;i<=n;i++) f>>v[i];
L[n]=1; subsir maxim de lung 1
for(k=n-1;k>0;k–)
{mx=0;
for(i=k+1;i<=n;i++)
if(v[i]>=v[k] && L[i]>mx)
mx=L[i];
L[k]=mx+1;
if(L[k]>max)
{max=L[k];
t=k;}
}
cout<<“lungimea maxima:”< afisarea subsirului
cout<
for(i=t+1;i<=n;i++)
if ((v[i]>=v[t]) && (L[i]==max-1))
{cout<
max–;}
}

Principiul optimalității
O problemă are o substructură optimală dacă se poate construi o substructură
optimă eficientă din soluțiile optime ale subproblemelor sale.
Altfel spus, putem rezolva problemele mari, găsind soluții la subproblemele
sale.

S-ar putea să vă placă și