1152 - Verificare Ordonat Div Imp: Difference between revisions
Andrada378 (talk | contribs) Pagină nouă: Cerinta Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător. Date de intrare Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului. Date de iesire Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar. Restrictii si precizari 1 ≤ n ≤ 500 fiecare element al vectorul... |
Andrada378 (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
== Cerința == | |||
Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător. | Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător. | ||
Date de intrare | == Date de intrare == | ||
Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului. | Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului. | ||
Date de iesire | == Date de iesire == | ||
Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar. | Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar. | ||
== Restricții si precizări == | |||
* 1 ≤ n ≤ 500 | |||
* fiecare element al vectorului va avea cel mult patru cifre | |||
Date de intrare | === Exemplu === | ||
'''Date de intrare''' | |||
7 | 7 | ||
Line 25: | Line 20: | ||
4 5 7 9 9 10 12 | 4 5 7 9 9 10 12 | ||
Date de | '''Date de ieșire''' | ||
DA | DA | ||
== Rezolvare == | |||
<syntaxhighlight lang="python"> | |||
def | def ordonat(a, st, dr): | ||
if st == dr: | |||
return 1 | |||
else: | |||
mij = (st + dr) // 2 | |||
a1 = ordonat(a, st, mij) | |||
a2 = ordonat(a, mij + 1, dr) | |||
if a1 == a2 and a[mij] <= a[mij + 1]: | |||
return 1 | |||
else: | |||
return 0 | |||
n = int(input()) | |||
a = [0] + list(map(int, input().split())) | |||
if ordonat(a, 1, n): | |||
print("DA") | |||
else: | |||
print("NU") | |||
</syntaxhighlight> |
Revision as of 19:45, 2 January 2024
Cerința
Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător.
Date de intrare
Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului.
Date de iesire
Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar.
Restricții si precizări
- 1 ≤ n ≤ 500
- fiecare element al vectorului va avea cel mult patru cifre
Exemplu
Date de intrare
7
4 5 7 9 9 10 12
Date de ieșire
DA
Rezolvare
<syntaxhighlight lang="python"> def ordonat(a, st, dr):
if st == dr: return 1 else: mij = (st + dr) // 2 a1 = ordonat(a, st, mij) a2 = ordonat(a, mij + 1, dr) if a1 == a2 and a[mij] <= a[mij + 1]: return 1 else: return 0
n = int(input()) a = [0] + list(map(int, input().split()))
if ordonat(a, 1, n):
print("DA")
else:
print("NU")
</syntaxhighlight>