3490 - Permutari AB

De la Universitas MediaWiki
Versiunea din 14 decembrie 2023 12:44, autor: Andrada378 (discuție | contribuții) (Pagină nouă: Cerinta Să se determine numărul minim de operaţii care trebuiesc efectuate pentru a transforma pe B în A. Date de intrare Fişierul de intrare permutariab.in conţine pe prima linie numărul natural N. Pe a doua linie se află N numere naturale, separate prin câte un spaţiu, reprezentând permutarea A. Pe a treia linie se află de asemenea N numere naturale, separate prin câte un spaţiu, reprezentând permutarea B. Date de iesire Fişierul de ieşire permutariab...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerinta

Să se determine numărul minim de operaţii care trebuiesc efectuate pentru a transforma pe B în A.

Date de intrare

Fişierul de intrare permutariab.in conţine pe prima linie numărul natural N. Pe a doua linie se află N numere naturale, separate prin câte un spaţiu, reprezentând permutarea A. Pe a treia linie se află de asemenea N numere naturale, separate prin câte un spaţiu, reprezentând permutarea B.

Date de iesire

Fişierul de ieşire permutariab.out conţine pe prima linie numărul natural X, reprezentând numărul minim de operaţii care trebuiesc efectuate pentru a transforma pe B în A.


Rezolvare


# Funcție pentru citirea permutărilor din fișier text

def citeste_permutari(nume_fisier):

    with open(nume_fisier, 'r') as file:

        n = int(file.readline())

        permutare_A = list(map(int, file.readline().split()))

        permutare_B = list(map(int, file.readline().split()))

    return n, permutare_A, permutare_B

# Funcție pentru determinarea numărului minim de operații

def numar_minim_operatii(n, permutare_A, permutare_B):

    # Inițializăm numărul minim de operații

    numar_operatii = 0

    # Parcurgem permutarea și comparăm elementele

    for i in range(n - 1):

        # Dacă elementele nu sunt în ordinea corectă, creștem numărul de operații

        if permutare_B[i] != permutare_A[i]:

            # Efectuăm operațiile necesare pentru a aduce elementul în poziția corectă

            index = permutare_B.index(permutare_A[i])

            permutare_B[i], permutare_B[index] = permutare_B[index], permutare_B[i]

            numar_operatii += 1

   

    return numar_operatii

def main():

    # Citim permutările din fișierul text

    numar, permutareA, permutareB = citeste_permutari('permutariab.txt')

    # Determinăm numărul minim de operații

    numar_operatii = numar_minim_operatii(numar, permutareA, permutareB)

    # Scriem rezultatul în fișierul text de ieșire

    with open('rezultat_permutari.txt', 'w') as file_out:

        file_out.write(f"Numărul minim de operații: {numar_operatii}")

if __name__ == "__main__":

    main()