4141 - Autostrada 1

De la Universitas MediaWiki
Versiunea din 2 iunie 2024 16:59, autor: Benzar Ioan (discuție | contribuții) (Pagină nouă: == Cerința == Într-un ținut îndepărtat, inginerii trebuie să construiască o autostradă care traversează un oraș format dintr-o rețea de străzi dispuse într-o matrice pătratică. Fiecare celulă a matricei reprezintă o intersecție a străzilor și are o valoare numerică ce indică costul de construcție la acea intersecție. Inginerii trebuie să parcurgă toate intersecțiile, trecând o singură dată prin fiecare celulă, pentru a calcula costul total al co...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerința

Într-un ținut îndepărtat, inginerii trebuie să construiască o autostradă care traversează un oraș format dintr-o rețea de străzi dispuse într-o matrice pătratică. Fiecare celulă a matricei reprezintă o intersecție a străzilor și are o valoare numerică ce indică costul de construcție la acea intersecție. Inginerii trebuie să parcurgă toate intersecțiile, trecând o singură dată prin fiecare celulă, pentru a calcula costul total al construcției autostrăzii.

Date de intrare

Programul citește de la tastatură:

Un număr întreg n reprezentând dimensiunea matricei pătratice (n x n). Valorile din matrice, fiecare rând fiind pe o linie separată.

Date de ieșire

Pe ecran se va afișa costul total al construcției autostrăzii, adică suma valorilor din toate celulele matricei.

Restricții și precizări

  • 1 ⩽’’’n’’’ ⩽ 1000

Exemplu 1

Intrare

3
1 2 3
4 5 6
7 8 9

Iesire

45

Rezolvare

def citeste_matrice_patratica():
    try:
        n = int(input("Introduceți dimensiunea matricii pătratice (n): "))
        matrice = []
        for _ in range(n):
            rand = list(map(int, input().split()))
            if len(rand) != n:
                return None
            matrice.append(rand)
        return matrice
    except ValueError:
        return None

def valideaza_matrice(matrice):
    if matrice:
        n = len(matrice)
        if 1 <= n <= 1000:
            if all(len(rand) == n for rand in matrice):
                if all(-10**6 <= elem <= 10**6 for rand in matrice for elem in rand):
                    return True
    return False

def calculeaza_cost_total(matrice):
    cost_total = sum(sum(rand) for rand in matrice)
    return cost_total

def main():
    print("Introduceți matricea pătratică:")
    matrice = citeste_matrice_patratica()
    
    if matrice is None:
        print("Datele de intrare nu corespund restricțiilor impuse.")
        return
    
    if valideaza_matrice(matrice):
        print("Datele de intrare corespund restricțiilor impuse.")
        cost_total = calculeaza_cost_total(matrice)
        print(cost_total)
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")

if __name__ == "__main__":
    main()