0518 - SecvZero
Sursa: 0518 - SecvZero
Cerinţa
Se dă un vector cu n elemente numere naturale. Determinați cea mai lungă secvență de elemente nule din vector. Dacă în vector există mai multe secvențe de elemente nule de lungime maximă se va determina cea mai din stânga.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele vectorului.
Date de ieșire
Programul va afișa pe ecran indicii st dr ai capetelor secvenței determinate, separați printr-un spațiu.
Restricţii şi precizări
- 1 ≤ n ≤ 1000
- cele n numere citite vor fi mai mici decât 1000
- indicii elementelor vectorului sunt cuprinși între 1 și n
- vectorul va conține cel puțin un element nul
Exemplu
- Intrare
- 10
- 0 1 0 0 0 5 0 0 0 2
- Ieșire
- 3 5
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line>
- 0518 - SecvZero
n = int(input("Introduceți numărul de elemente din vector: ")) v = list(map(int, input("Introduceți elementele vectorului: ").split()))
start = -1 # indexul de start al secvenței de elemente nule end = -1 # indexul de sfârșit al secvenței de elemente nule max_length = 0 # lungimea maximă a secvenței de elemente nule current_start = -1 # indexul de start al secvenței curente de elemente nule current_length = 0 # lungimea curentă a secvenței de elemente nule
for i in range(n):
if v[i] == 0: # dacă am găsit un element nul if current_start == -1: # dacă nu eram deja într-o secvență de elemente nule current_start = i # începem o secvență nouă current_length += 1 # creștem lungimea curentă a secvenței else: # dacă am găsit un element nenul if current_length > max_length: # dacă secvența curentă este mai lungă decât maximul anterior start = current_start # actualizăm indexul de start al secvenței maxime end = i - 1 # actualizăm indexul de sfârșit al secvenței maxime max_length = current_length # actualizăm lungimea maximă current_start = -1 # resetăm indexul de start al secvenței curente current_length = 0 # resetăm lungimea curentă a secvenței
- Afisăm indicii de start și sfârșit ai secvenței de elemente nule
print(start, end)
</syntaxhighlight>