Zadanie 1. Najdłuższy niemalejący podciąg

Problem najdłuższego niemalejącego podciągu jest klasycznym problemem optymalizacyjnym. Oznacza to, że posiada on własność optymalnej podstrukturywłasność optymalnej podstrukturywłasność optymalnej podstruktury. Problem ten jest następujący: mamy ciąg n liczb całkowitych aIndeks dolny 1 Indeks dolny koniec,aIndeks dolny 2 Indeks dolny koniec,...,aIndeks dolny n Indeks dolny koniec , należy znaleźć najdłuższy podciąg bIndeks dolny 1 Indeks dolny koniec,bIndeks dolny 2 Indeks dolny koniec,...,bIndeks dolny k Indeks dolny koniec ciągu aIndeks dolny i Indeks dolny koniec, że dla każdego i>0 prawdą jest bIndeks dolny i Indeks dolny koniec bIndeks dolny i+1 Indeks dolny koniec.

Przykładowo: dla ciągu [4, 6, 3, 9, 1, 0, 1, 4, 7, 2, 5, 8, 9, 3, 5] maksymalny niemalejący podciąg to [1, 1, 4, 7, 8, 9].

W pliku liczby.txt znajduje się 1000 liczb całkowitych dodatnich, zapisanych dziesiętnie, maksymalnie sześciocyfrowych. Każda liczba umieszczona jest w osobnym wierszu.

RCAC9BQCQSJZO

Plik TXT o rozmiarze 6.62 KB w języku polskim

Napisz program(-y), za pomocą którego(-ych) rozwiążesz poniższe zadanie. Do oceny oddaj dokument wyniki.txt z rozwiązaniami  oraz pliki źródłowe programów wykorzystanych do uzyskania rozwiązania.

Znajdź najdłuższy niemalejący ciąg liczb występujących w kolejnych wierszach pliku liczby.txt. Podaj pierwszy element tego ciągu oraz liczbę jego elementów. Możesz założyć, że jest jeden taki ciąg.

Dla przykładowych danych:

 23156 

 1231 

 1345 

 1456 

 1456 

 897 

najdłuższy niemalejący ciąg liczb rozpoczyna się liczbą 1231 i składa się z 4 elementów.

Zadanie pochodzi ze zbioru zadań  maturalnych CKE (zadanie nr 62.2).

Przykładowe rozwiązanie:

Linia 1. plik znak równości open otwórz nawias okrągły cudzysłów liczby kropka txt cudzysłów zamknij nawias okrągły. Linia 2. liczby znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 3. for i in plik dwukropek. Linia 4. liczby kropka append otwórz nawias okrągły int otwórz nawias okrągły i zamknij nawias okrągły zamknij nawias okrągły. Linia 7. poprzednia znak równości minus 1. Linia 8. pierwszy znak równości minus 1. Linia 9. dlugosc podkreślnik ciagu znak równości 0. Linia 10. naj podkreślnik dlugosc podkreślnik ciagu znak równości 0. Linia 11. naj podkreślnik pierwszy znak równości minus 1. Linia 13. for liczba in liczby dwukropek. Linia 14. if liczba zamknij nawias ostrokątny znak równości poprzednia dwukropek. Linia 15. dlugosc podkreślnik ciagu plus znak równości 1. Linia 16. else dwukropek. Linia 17. pierwszy znak równości liczba. Linia 18. dlugosc podkreślnik ciagu znak równości 1 średnik. Linia 19. if dlugosc podkreślnik ciagu zamknij nawias ostrokątny naj podkreślnik dlugosc podkreślnik ciagu dwukropek. Linia 20. naj podkreślnik dlugosc podkreślnik ciagu znak równości dlugosc podkreślnik ciagu. Linia 21. naj podkreślnik pierwszy znak równości pierwszy. Linia 22. poprzednia znak równości liczba. Linia 24. plik kropka close otwórz nawias okrągły zamknij nawias okrągły. Linia 26. print otwórz nawias okrągły f cudzysłów najdluzszy ciag zaczyna sie od elementu otwórz nawias klamrowy naj podkreślnik pierwszy zamknij nawias klamrowy i ma otwórz nawias klamrowy naj podkreślnik dlugosc podkreślnik ciagu zamknij nawias klamrowy elementów cudzysłów zamknij nawias okrągły.

Odpowiedź do zadania:

Najdłuższy ciąg zaczyna się od elementu 639 i ma 6 elementów