1266 - Cauta Nr In Matrice: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
Linia 20: Linia 20:
== Exemplul 1 ==
== Exemplul 1 ==
;Intrare
;Intrare
;3 4
:3 4
;2 5 11 14
:2 5 11 14
;29 27 23 19
:29 27 23 19
;32 38 44 59
:32 38 44 59
;3
:3
;11 24 38
:11 24 38
;Iesire
;Iesire
;Datele introduse corespund restrictiilor impuse.
;Datele introduse corespund restrictiilor impuse.
;1 3
:1 3
;0
:0
;3 2
:3 2


== Exemplul 2 ==
== Exemplul 2 ==
;Intrare
;Intrare
;3 2
:3 2
;5 8
:5 8
;12 19
:12 19
;23 21
:23 21
;Iesire
;Iesire
;Datele introduse nu corespund restrictiilor impuse.
;Datele introduse nu corespund restrictiilor impuse.

Versiunea de la data 12 decembrie 2023 10:05

Cerinta

Se dă o matrice cu n linii şi m coloane ce conţine numere naturale astfel încât parcurgând matricea pe prima linie de la stânga la dreapta, pe a doua linie de la dreapta la stânga, pe a treia linie de la stânga la drepta, ş.a.m.d., toate elementele matricei vor forma un şir strict crescător. Fiind date p numere naturale ordonate strict crescător, să se afişeze pentru fiecare numărul liniei şi coloanei unde acesta se găseşte în matrice, respectiv 0 dacă acesta nu se găseşte în matrice.

Date de intrare

Fișierul de intrare cautanrinmatrice.txt conține pe prima linie numerele n şi m reprezentând dimensiunile matricei , pe următoarele n linii câte m numere aranjate conform enunţului reprezentând elementele matricei, pe următoarea linie numărul p, iar pe ultima linie cele p numere în ordine strict crescătoare ce trebuie căutate în matrice.

Date de iesire

Fișierul de ieșire cautanrinmatrice.txt va conține pe primele p linii numărul liniei şi coloanei pe care se află în matrice fiecare din cele p numere date, respectiv 0 dacă numărul nu se găseşte în matrice.

Restrictii si precizari

  • 1 ≤ n , m ≤ 1000
  • elementele matricei sunt numere naturale mai mici decât 2.000.000.000
  • 1 ≤ p ≤ 1.000.000
  • cele p numere vor fi mai mici decât 2.000.000.000

Exemplul 1

Intrare
3 4
2 5 11 14
29 27 23 19
32 38 44 59
3
11 24 38
Iesire
Datele introduse corespund restrictiilor impuse.
1 3
0
3 2

Exemplul 2

Intrare
3 2
5 8
12 19
23 21
Iesire
Datele introduse nu corespund restrictiilor impuse.


Rezolvare

def cauta_in_matrice(matrice, numar):
    for i in range(len(matrice)):
        for j in range(len(matrice[i])):
            if matrice[i][j] == numar:
                return i + 1, j + 1  # Adăugăm 1 pentru a afișa linia și coloana în formatul din enunț
    return 0, 0  # Numărul nu a fost găsit în matrice

def main():
    # Citirea datelor de intrare din fișier
    with open("cautanrinmatrice.txt", "r") as f:
        n, m = map(int, f.readline().split())
        matrice = [list(map(int, f.readline().split())) for _ in range(n)]
        p = int(f.readline())
        numere_cautate = list(map(int, f.readline().split()))

    # Deschiderea fișierului de ieșire pentru scriere
    with open("cautanrinmatrice.txt", "w") as g:
        # Căutarea și scrierea rezultatelor în fișierul de ieșire
        for numar in numere_cautate:
            linie, coloana = cauta_in_matrice(matrice, numar)
            g.write(f"{linie} {coloana}\n")

if __name__ == "__main__":
    main()

Explicatie

Numărul 11 se află în matrice pe linia 1 coloana 3, numărul 24 nu se află în matrice, iar numărul 38 se află în matrice pe linia 3, coloana 2.