Cerința
Un şir se numeşte şir munte, dacă are un singur maxim pe poziţia v, numit vârf şi respectă următoarele proprietăţi:
În stânga şi în dreapta vârfului există cel puţin câte un element.
Secvenţa a[1], a[2], ... , a[v] este strict crescătoare.
Secvenţa a[v], a[v+1], ... , a[n] este strict descrescătoare.
Se citeşe un şir cu n elemente. Să se verifice dacă este şir munte.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire
Programul va afișa pe ecran unul dintre mesajele DA sau NU în funcţie că este şir munte sau nu.
Restricții și precizări
3 ≤ n ≤ 1000
0 ≤ elementele şirului ≤ 1 000 000 000
Exemplu 1:
Intrare
5
1 2 3 4 5
Ieșire
NU
Exemplu 2:
Intrare
5
1 2 3 4 3
Ieșire
DA
Explicație
Primul exemplu nu este şir munte, pe când al doilea exemplu este şir munte.
problema #1321 de pe pbinfo
Răspunsuri la întrebare
Răspuns de
4
Am facut problema in C++.
#include <iostream>
using namespace std;
int main()
{
int n = 0;
//citeste n
cout<<"Lungime sir: ";
cin>>n;
//declar vectorul
int v[n];
//citesc elementele vectorului
for (int j = 0; j < n; j++)
{
cout<<"v["<<j<<"]=";
cin>>v[j];
cout<<endl;
}
//determin portiunea crescatoare
int i = 0;
while (i < n - 1 && v[i] < v[i + 1])
i++;
//variabila verificare conditie
bool ok = true;
//verific daca sirul este numai crescator atunci i-ul avand
//valoarea indicelui ultimului element al vectorului
if (i >= n-1)
ok = false;
//verific daca conditia de munte este si dupa ce se termina sirul crescator.
for (int j = i; j < n-1 && ok; j++)
{
if (v[j] < v[j + 1])
ok = false;
}
//Afisez mesajele corespunzatoare.
if (ok)
cout<<"DA";
else
cout<<"NU";
}
#include <iostream>
using namespace std;
int main()
{
int n = 0;
//citeste n
cout<<"Lungime sir: ";
cin>>n;
//declar vectorul
int v[n];
//citesc elementele vectorului
for (int j = 0; j < n; j++)
{
cout<<"v["<<j<<"]=";
cin>>v[j];
cout<<endl;
}
//determin portiunea crescatoare
int i = 0;
while (i < n - 1 && v[i] < v[i + 1])
i++;
//variabila verificare conditie
bool ok = true;
//verific daca sirul este numai crescator atunci i-ul avand
//valoarea indicelui ultimului element al vectorului
if (i >= n-1)
ok = false;
//verific daca conditia de munte este si dupa ce se termina sirul crescator.
for (int j = i; j < n-1 && ok; j++)
{
if (v[j] < v[j + 1])
ok = false;
}
//Afisez mesajele corespunzatoare.
if (ok)
cout<<"DA";
else
cout<<"NU";
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Informatică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă