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
3645 - Cuburi 4
(section)
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!
== Rezolvare == <syntaxhighlight lang="python" line> #3645 def max_even_sequence(laturi): # Cerința 1: lungimea maximă a unei secvențe de cuburi cu laturi exprimate printr-un număr par de centimetri max_par = 0 last_par = -1 count = 0 for i in range(len(laturi)): if laturi[i] % 2 == 0: if i - last_par > 1: count = 0 count += 1 last_par = i max_par = max(max_par, count) return max_par def max_tower_height(laturi): # Cerința 2: înălțimea maximă a unui turn height = [0] # înălțimea maximă a turnului la fiecare pas stack = [laturi[0]] # cuburile din turnul curent for i in range(1, len(laturi)): if laturi[i] < laturi[i-1]: stack.append(laturi[i]) else: # adăugăm cuburile din stivă la turnul anterior while len(stack) > 1 and stack[-1] >= stack[-2]: stack.pop() height.append(sum(stack)) stack = [laturi[i]] # adăugăm înălțimea ultimului turn while len(stack) > 1 and stack[-1] >= stack[-2]: stack.pop() height.append(sum(stack)) return max(height) if __name__ == '__main__': c = int(input("C este:")) n = int(input("N este:")) if not 1 <= n <= 500: print("Datele nu corespund restricțiilor impuse.") exit() laturi = [] for i in range(n): lat = int(input("Lungimile laturilor sunt: ")) if not 1 <= lat <= 10000: print("Datele nu corespund restricțiilor impuse.") exit() laturi.append(lat) if c == 1: print("Datele sunt introduse corect.") print(max_even_sequence(laturi)) else: print("Datele sunt introduse corect.") print(max_tower_height(laturi)) </syntaxhighlight> '''Explicatie cod:''' Această bucată de cod conține două funcții care rezolvă cele două cerințe ale problemei și un bloc de cod care primește datele de intrare, verifică dacă sunt valide și apelează funcția corespunzătoare. Prima funcție, max_even_sequence(laturi), determină lungimea maximă a unei secvențe de cuburi cu laturi exprimate printr-un număr par de centimetri. Acest lucru se face prin parcurgerea listei de laturi și numărarea consecutivă a cuburilor cu laturi pare. Dacă apare un cub cu laturi impare sau o pauză între două cuburi pare este mai mare de 1, se resetează numărul de cuburi pare consecutive. Funcția returnează lungimea maximă a unei astfel de secvențe. A doua funcție, max_tower_height(laturi), determină înălțimea maximă a unui turn. Algoritmul începe prin adăugarea primului cub la o stivă și inițializarea înălțimii turnului curent la 0. Apoi, pentru fiecare cub următor, acesta este comparat cu cubul anterior. Dacă cubul curent este mai mic decât cel anterior, atunci este adăugat la stiva turnului curent. Dacă cubul curent este mai mare sau egal cu cel anterior, atunci toate cuburile din stiva turnului curent sunt adăugate la înălțimea turnului anterior și o nouă stivă este începută cu cubul curent. Acest proces se repetă pentru fiecare cub din lista de laturi. În final, se calculează înălțimea ultimului turn și se determină înălțimea maximă dintre toate turnurile. Funcția returnează înălțimea maximă a turnului. Blocul de cod care primește datele de intrare verifică mai întâi dacă numărul de laturi este în intervalul 1-500 și dacă fiecare latură este între 1 și 10000. Dacă aceste condiții nu sunt îndeplinite, programul se oprește și afișează un mesaj corespunzător. Dacă datele de intrare sunt valide, programul apelează funcția corespunzătoare pentru a rezolva problema și afișează rezultatul.
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