Strefa wyzwań
Na czym polega programowanie dynamiczne.
Jak rozpoznać i wyodrębnić w ciągu różne podciągi spełniające określone warunki (np. niemalejące, o największej sumie).
Teraz czas sprawdzić swoją wiedzę i umiejętności w praktyce. Zastosuj poznane metody krok po kroku, aby samodzielnie znaleźć podciągi o wymaganych własnościach w nowych przykładach.
Zadanie 1. Giełda bajtocka
Ania jest analitykiem giełdowym. W ostatnim miesiącu zbierała dane dotyczące wzrostów i spadków wartości wskaźnika na lokalnej giełdzie w Bajtocji. W celach statystycznych zamierza sprawdzić, jaki najlepszy możliwy wynik giełda osiągnęła w ciągu następujących po sobie dni. By to zrobić, musi znaleźć w całym badanym okresie ciąg następujących po sobie dni, w których suma wyników była największa. Ania bierze pod uwagę to, że wśród dni może być taki, w którym wartość wskaźnika była ujemna oraz to, że na giełdzie może mieć miejsce bessa, czyli wszystkie wskaźniki będą ujemne. W takiej sytuacji program powinien wypisać jednoelementowy podciąg składający się z największej liczby ujemnej.
Dane zapisane są w pliku giełda.txt. Plik składa się ze wierszy. Każdy wiersz zawiera liczbę rzeczywistą oznaczającą wzrost lub spadek wartości wskaźnika giełdy w danym dniu miesiąca:
Napisz program, który dla danych z pliku giełda.txt znajdzie spójny podciąg o maksymalnej sumie, a jego sumę zaokrągloną do dwóch miejsc po przecinku zapisze w pliku wyniki.txt.
Poprzez spójny podciąg o maksymalnej sumie rozumiemy taki podciąg, który jest złożony z elementów kolejno następujących po sobie w ciągu bazowym, a którego zsumowane elementy dają największy możliwy wynik.
Spójny podciąg o maksymalnej sumie wcale nie musi być podciągiem, który składa się ze wszystkich elementów danego ciągu.
Dla przykładowej tablicy dane:
Suma wszystkich elementów wynosi 3.44. Jednak już na pierwszy rzut oka możemy stwierdzić, że spójnym podciągiem o większej sumie byłby podciąg jednoelementowy 5.23.
Tymczasem suma maksymalnego spójnego podciągu{3.1, -1, 2.5, 1.5, 0.4} wynosi 6.5.
Do oceny oddajesz:
Dane:
plik
wyniki.txtz odpowiedzią (liczbą rzeczywistą będącą sumą maksymalnego spójnego podciągu liczb z plikugiełda.txtzaokrągloną do dwóch miejsc po przecinku)plik(i) z komputerową realizacją zadania (kodem programu)
Poniżej masz możliwość wpisania kodu swojego rozwiązania i przetestowania go dla przykładowych danych (bez użycia plików). W razie problemów, możesz skorzystać z przykładowego rozwiązania umieszczonego pod przyciskiem Pokaż rozwiązanie. Na końcu materiału znajdziesz odpowiedź dla danych umieszczonych w pliku gielda.txt. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego.
Odpowiedź do zadania:
wyniki.txt