Informator maturalny 2023: Zadanie 1
Arkusz i pliki wymieniane w tym zadaniu można pobrać ze strony CKE.
Bezpośredni link do plików znajduje się tutaj.
Zadanie
Segmentem nazwiemy spójny ciąg elementów tablicy składający się z co najmniej 1 elementu.
Przykład: dla tablicy A = [1, 8, 4, 2, 7, 9] segmentami są ciąg 1,8,4 oraz ciąg 8,4,2,7, natomiast
nie jest segmentem ciąg 8,2,7,9 (bo w tablicy A pomiędzy liczbą 8 a liczbą 2 jest liczba 4).
Zadanie 1.3 (0-3)
Elementy pewnej 1000-elementowej tablicy A zapisano kolejno w pliku dane1_3.txt. Każda z liczb w pliku dane1_3.txt należy do przedziału [-100, 100] i jest zapisana w oddzielnym wierszu.
Napisz program wyznaczający największą sumę segmentu tablicy A.
Do oceny oddajesz:
- plik zadanie1_3.txt zawierający jedną liczbę będącą odpowiedzią do zadania (największą sumą),
- pliki(i) z komputerową realizacją zadania (kodem programu).
Rozwiązanie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | plik = open('dane1_3.txt', 'r') lista = plik.readlines() plik.close() lista_new = [int(i.rstrip('\n')) for i in lista] print(lista_new) #-----Algorytm Kaden'a----- wynik = 0 suma_chwilowa = 0 for i in lista_new: suma_chwilowa = max(0, suma_chwilowa + i) wynik = max(suma_chwilowa, wynik) #-------------------------- print(wynik) plik = open('zadanie1_3.txt', 'w') plik.write(str(wynik)) plik.close() |
Zadanie 1.4 (0-4)
Elementy pewnej tablicy A o 100 000 elementów zapisano kolejno w pliku zadanie1_4.txt. Każda z liczb w pliku zadanie1_4.txt należy do przedziału od [-100, 100] i jest zapisana w oddzielnym wierszu.
Przyjmujemy, że pierwszy element tablicy ma indeks równy 1. Napisz program wypisujący indeks pierwszego i indeks ostatniego elementu segmentu o największej sumie. W tablicy A jest tylko jeden taki segment, a suma jego elementów jest dodatnia.
Do oceny oddajesz:
- plik zadanie1_4.txt zawierający jedną liczbę będącą odpowiedzią do zadania (największą sumą),
- pliki(i) z komputerową realizacją zadania (kodem programu).
Rozwiązanie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | plik = open('dane1_4.txt', 'r') lista = plik.readlines() plik.close() lista_new = [int(i.rstrip('\n')) for i in lista] print(lista_new) #-----Algorytm Kaden'a z uwzględnieniem miejsc----- wynik = 0 suma_chwilowa = 0 start = 0 koniec = 0 for i, j in enumerate(lista_new): if suma_chwilowa <= 0: start_chwilowy = i suma_chwilowa = j else: suma_chwilowa += j if suma_chwilowa > wynik: wynik = suma_chwilowa koniec = i + 1 start = start_chwilowy + 1 #-------------------------- zapis = str(start) + ' ' + str(koniec) plik = open('zadanie1_4.txt', 'w') plik.write(zapis) plik.close() |