Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
3737 - SecvEgale1 v2
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Sursa: [https://www.pbinfo.ro/probleme/3737/secvegale1-v2 - SecvEgale1 v2] ---- == Cerinţa == Se dă un vector cu '''n''' elemente, numere naturale. Determinați cea mai lungă secvență de elemente din vector care începe și se termină cu aceeași valoare. Dacă în vector există mai multe secvențe corecte 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, separate prin spații, reprezentând elementele vectorului. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi va afișa pe ecran indicii '''st dr''' ai capetelor secvenței determinate, separați printr-un spațiu. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.". == Restricţii şi precizări == * 1 ≤ '''n''' ≤ 1.000.000 * cele '''n''' numere citite vor fi mai mici decât '''1.000.000''' * indexarea elementelor vectorului începe de la 1. == Exemple == ===Exemplul 1=== ; Intrare : 12 : 6 6 8 3 6 6 3 8 4 3 3 4 ; Ieșire : Datele sunt corecte. : 4 11 ===Exemplul 2=== ; Intrare : 7 : 1 2 3 4 1 7 8 ; Ieșire : Datele sunt corecte. : 1 5 ===Exemplul 3=== ; Intrare : 2 : 314441 41241241 ; Ieșire : Datele nu sunt comform restricțiilor impuse. <br> == Rezolvare == <syntaxhighlight lang="python" line> #3737 def secvente(vector, n): lungime_maxima=0 st = 0 dr = 0 for i in range(n): for j in range(i+1 , n+1): if vector[i] == vector [j-1] and j - i > lungime_maxima: lungime_maxima = j-i st = i dr = j-1 print(st+1, dr+1) def conform_restrictiilor(n, vector): if n > 1000000 or n < 1: print("Datele nu sunt comform restricțiilor impuse.") return False for x in vector: if x > 1000000 or x < 0: print("Datele nu sunt comform restricțiilor impuse.") return False print("Datele sunt corecte.") return True if __name__ == '__main__': n=int(input()) vector = list(map(int,input().split())) if conform_restrictiilor(n, vector) is True: secvente(vector, n) </syntaxhighlight> ==Explicaţie cod== Funcția '''secvente()''' primește vectorul '''vector''' și numărul de elemente din vector '''n'''. Acestă funcție calculează cea mai lungă secvență de elemente din '''vector''' care începe și se termină cu aceeași valoare. Inițial, variabilele '''lungime_maxima''', '''st''' și '''dr''' sunt inițializate cu 0. Două bucle for sunt utilizate pentru a itera prin toate elementele vectorului și pentru a găsi secvențele de lungime maximă. Când sunt găsite două elemente consecutive egale, se calculează lungimea secvenței, iar dacă aceasta este mai mare decât '''lungimea maximă''' găsită anterior, atunci variabilele '''st''' și '''dr''' sunt actualizate cu indicii elementelor de început și de sfârșit ai secvenței. Indicii afișați sunt incrementați cu 1 pentru a corespunde indexării elementelor în program, care începe de la 1, nu de la 0. Funcția '''conform_restrictiilor''' primește un numar '''n''' și o listă '''vector''' și verifică dacă sunt respectate restricțiile problemei (0 < '''n''' < 1000000, 0 ≤ '''vector[i]''' ≤ 1000000 pentru fiecare '''i''' în [0, n)). Dacă restricțiile nu sunt respectate, funcția afișează un mesaj de eroare și returnează False; în caz contrar, afișează un mesaj de confirmare și returnează True. În blocul '''__name__ == '__main__'''', programul citește dimensiunea și secvența de la intrare folosind '''input()''' și '''map()'''. Apoi verifică dacă restricțiile sunt respectate utilizând funcția '''conform_restrictiilor'''. Dacă restricțiile sunt respectate, funcția secvente este apelată cu '''vector''' și '''n''' ca argumente.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width