Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (109)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (49)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (85)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (37)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (13)
Programare vizuală în C# (11)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Subiect-Concurs Mate-Info-2013 - Subiectul III

#include<iostream>
using namespace std;

void citire(int &n, int X[100])
{//citeste pe n si elementele vectorului X
	cin>>n;
	for(int i=1; i<=n; i++)
		cin>>X[i];
}

int prefix (int n, int m)
{//verifica daca n e prefix al lui m
    if(n>=m) return 0;//nu e prefix daca n>m
    while(m>n) m=m/10;//tai repetat ultima cifra din m cat timp m>n
    if(m==n) return 1;//am ajuns la n, deci n e prefix al lui m
    else return 0;//altfel nu e prefix
}

void afisare(int a[],int i, int j)
{//afiseaza secventa de la i la j din vectorul a
    for(int k=i;k<=j;k++)
        cout<<a[k]<<" ";
}

void secventa(int n, int a[])
{//determina secventa de lungime maxima ceruta
    int lmax=0,p,k=1;//lungimea maxima, pozitia de final a secventei, lungimea curenta
    for(int i=1;i<n;i++)
        if(prefix(a[i],a[i+1]))//daca a[i] e prefix al lui a[i+1]
        {
            k++;//maresc lungimea secventei curente
            if(k>lmax) //daca e mai lunga decat cea maxima
                {lmax=k; p=i+1;} //actualizez lungimea maxima si pozitia finala
        }
        else k=1;//altfel reinitializez secventa curenta
    if(lmax>1)//daca exista secventa cu lungime cel putin 2
           afisare(a,p-lmax+1,p);//afisez secventa
    else cout<<"Secventa este vida";//nu exista secventa
}

int main()
{
    int n, a[100];
    citire(n,a);
    secventa(n,a);
    return 0;
}

13 nov 2018
Site-ul conține 868 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian