4141 - Autostrada 1

From Bitnami MediaWiki

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

<syntaxhighlight lang="python" line> 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()

</syntaxhighlight>