3264 - Sum Min XI

From Bitnami MediaWiki
Revision as of 10:58, 4 January 2024 by Codrut Borcutean (talk | contribs) (Pagină nouă: == Cerinţa == Se dă o matrice pătratică cu '''n''' lini şi '''n''' coloane şi elemente numere întregi. Determinaţi cea mai mică sumă a '''n''' elemente din matrice, obținută adunând câte un element de pe fiecare coloană a matricei. == Date de intrare == Fişierul de intrare '''summin_xiin.txt''' conţine pe prima linie numărul '''n''', iar pe următoarele '''n''' linii câte '''n''' numere întregi, separate prin spaţii, reprezentând elementele matricei. ==...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit | edit source]

Se dă o matrice pătratică cu n lini şi n coloane şi elemente numere întregi. Determinaţi cea mai mică sumă a n elemente din matrice, obținută adunând câte un element de pe fiecare coloană a matricei.

Date de intrare[edit | edit source]

Fişierul de intrare summin_xiin.txt conţine pe prima linie numărul n, iar pe următoarele n linii câte n numere întregi, separate prin spaţii, reprezentând elementele matricei.

Date de ieșire[edit | edit source]

Fişierul de ieşire summin_xiout.txt va conţine pe prima linie numărul S, reprezentând suma minimă determinată.

Restricţii şi precizări[edit | edit source]

  • 1 ⩽ n⩽ 100
  • elementele matricei vor avea cel mult 4 cifre

Exemplu 1[edit | edit source]

summin_xiin.txt
4
12 16 5 4
11 14 6 7
8 2 3 17
10 9 13 15
summin_xiout.txt
Datele de intrare corespund restrictiilor impuse
17


Exemplu 2[edit | edit source]

summin_xiin.txt
4000
12 16 5 4
11 14 6 7
8 2 3 17
10 9 13 15
summin_xiout.txt
Datele de intrare nu corespund restrictiilor impuse


Explicatie[edit | edit source]

17=8+2+3+4.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def suma_minima(matrice):

   # Calculează suma minimă a elementelor din matrice, adunând câte un element de pe fiecare coloană.
   suma = 0
   for coloana in zip(*matrice):
       suma += min(coloana)
   return suma


def main():

   with open('summin_xiin.txt', 'r') as fin, open('summin_xiout.txt', 'w') as fout:
       n = int(fin.readline().strip())
       matrice = [list(map(int, linie.split())) for linie in fin.readlines()]
       # Verifică dacă datele de intrare respectă restricțiile
       if not (1 <= n <= 100 and all(0 <= x < 10000 for linie in matrice for x in linie)):
           fout.write("Datele de intrare nu corespund restrictiilor impuse\n")
           return
       fout.write("Datele de intrare corespund restrictiilor impuse\n")
       suma = suma_minima(matrice)
       fout.write(f"{suma}\n")


if __name__ == "__main__":

   main()


</syntaxhighlight>