Rozważ kawałek sznurka (jak w „sznurku”, a nie w „wiązce znaków”), który jest składany w tę iz powrotem na linii rzeczywistej. Możemy opisać kształt łańcucha za pomocą listy punktów, przez które przechodzi (w kolejności). Dla uproszczenia założymy, że wszystkie te punkty są liczbami całkowitymi.
Weź jako przykład [-1, 3, 1, -2, 5, 2, 3, 4]
(pamiętaj, że nie każdy wpis oznacza zakładanie):
Ciąg rozciągający się wzdłuż kierunku pionowego służy wyłącznie do celów wizualizacji. Wyobraź sobie, że sznurek jest spłaszczony na prawdziwej linii.
Teraz pojawia się pytanie: jaka jest największa liczba kawałków, na które ten sznurek można pokroić jednym cięciem (które na powyższym zdjęciu musiałyby być pionowe). W tym przypadku odpowiedź brzmi 6 z cięciem pomiędzy 2
i 3
:
Aby uniknąć dwuznaczności, cięcie musi być wykonywane w pozycji innej niż całkowita.
Wyzwanie
Biorąc pod uwagę listę pozycji całkowitych, przez które składa się sznurek, musisz określić największą liczbę kawałków, na które można cięć za pomocą pojedynczego cięcia w pozycji innej niż całkowita.
Możesz napisać pełny program lub funkcję. Możesz przyjmować dane wejściowe za pomocą STDIN, argumentu wiersza poleceń, pytania lub parametru funkcji. Możesz zapisać dane wyjściowe do STDOUT, wyświetlić je w oknie dialogowym lub zwrócić z funkcji.
Możesz założyć, że lista ma dowolny dogodny format listy lub łańcucha.
Lista będzie zawierać co najmniej 2 i nie więcej niż 100 wpisów. Wpisy będą liczbami całkowitymi, każdy w zakresie -2 31 ≤ p i <2 31 . Możesz założyć, że żadne dwa kolejne wpisy nie są identyczne.
Twój kod musi przetwarzać takie dane wejściowe (w tym poniższe przypadki testowe) w czasie krótszym niż 10 sekund na rozsądnym komputerze stacjonarnym.
Przypadki testowe
Wszystkie przypadki testowe są po prostu wprowadzane, a następnie generowane.
[0, 1]
2
[2147483647, -2147483648]
2
[0, 1, -1]
3
[1, 0, -1]
2
[-1, 3, 1, -2, 5, 2, 3, 4]
6
[-1122432493, -1297520062, 1893305528, 1165360246, -1888929223, 385040723, -80352673, 1372936505, 2115121074, -1856246962, 1501350808, -183583125, 2134014610, 720827868, -1915801069, -829434432, 444418495, -207928085, -764106377, -180766255, 429579526, -1887092002, -1139248992, -1967220622, -541417291, -1617463896, 517511661, -1781260846, -804604982, 834431625, 1800360467, 603678316, 557395424, -763031007, -1336769888, -1871888929, 1594598244, 1789292665, 962604079, -1185224024, 199953143, -1078097556, 1286821852, -1441858782, -1050367058, 956106641, -1792710927, -417329507, 1298074488, -2081642949, -1142130252, 2069006433, -889029611, 2083629927, 1621142867, -1340561463, 676558478, 78265900, -1317128172, 1763225513, 1783160195, 483383997, -1548533202, 2122113423, -1197641704, 319428736, -116274800, -888049925, -798148170, 1768740405, 473572890, -1931167061, -298056529, 1602950715, -412370479, -2044658831, -1165885212, -865307089, -969908936, 203868919, 278855174, -729662598, -1950547957, 679003141, 1423171080, 1870799802, 1978532600, 107162612, -1482878754, -1512232885, 1595639326, 1848766908, -321446009, -1491438272, 1619109855, 351277170, 1034981600, 421097157, 1072577364, -538901064]
53
[-2142140080, -2066313811, -2015945568, -2013211927, -1988504811, -1884073403, -1860777718, -1852780618, -1829202121, -1754543670, -1589422902, -1557970039, -1507704627, -1410033893, -1313864752, -1191655050, -1183729403, -1155076106, -1150685547, -1148162179, -1143013543, -1012615847, -914543424, -898063429, -831941836, -808337369, -807593292, -775755312, -682786953, -679343381, -657346098, -616936747, -545017823, -522339238, -501194053, -473081322, -376141541, -350526016, -344380659, -341195356, -303406389, -285611307, -282860017, -156809093, -127312384, -24161190, -420036, 50190256, 74000721, 84358785, 102958758, 124538981, 131053395, 280688418, 281444103, 303002802, 309255004, 360083648, 400920491, 429956579, 478710051, 500159683, 518335017, 559645553, 560041153, 638459051, 640161676, 643850364, 671996492, 733068514, 743285502, 1027514169, 1142193844, 1145750868, 1187862077, 1219366484, 1347996225, 1357239296, 1384342636, 1387532909, 1408330157, 1490584236, 1496234950, 1515355210, 1567464831, 1790076258, 1829519996, 1889752281, 1903484827, 1904323014, 1912488777, 1939200260, 2061174784, 2074677533, 2080731335, 2111876929, 2115658011, 2118089950, 2127342676, 2145430585]
2
a reasonable desktop PC
jest niejednoznaczne?