Pertimbangkan seutas tali (seperti dalam "tali", bukan seperti dalam "sekelompok karakter"), yang dilipat bolak-balik pada garis nyata. Kita dapat menggambarkan bentuk string dengan daftar poin yang dilewatinya (secara berurutan). Untuk mempermudah, kami akan menganggap semua titik tersebut adalah bilangan bulat.
Ambil sebagai contoh [-1, 3, 1, -2, 5, 2, 3, 4]
(perhatikan bahwa tidak setiap entri menyiratkan lipatan):
Tali memanjang sepanjang arah vertikal hanya untuk keperluan visualisasi. Bayangkan string semua diratakan ke garis nyata.
Sekarang inilah pertanyaannya: berapakah jumlah string terbesar yang dapat dipotong menjadi satu dengan potongan tunggal (yang harus vertikal pada gambar di atas). Dalam hal ini, jawabannya adalah 6 dengan potongan di antara 2
dan 3
:
Untuk ambiguitas menghindari, dipotong memiliki harus dilakukan pada posisi non-integer.
Tantangan
Diberikan daftar posisi integer yang dilipat oleh string, Anda harus menentukan jumlah terbesar dari string yang dapat dipotong menjadi dengan potongan tunggal pada posisi non-integer.
Anda dapat menulis program atau fungsi lengkap. Anda dapat mengambil input melalui STDIN, argumen baris perintah, parameter prompt atau fungsi. Anda dapat menulis output ke STDOUT, menampilkannya di kotak dialog atau mengembalikannya dari fungsi.
Anda dapat mengasumsikan bahwa daftar tersebut ada dalam format daftar atau string yang mudah.
Daftar ini akan berisi setidaknya 2 dan tidak lebih dari 100 entri. Entri akan menjadi bilangan bulat, masing-masing dalam kisaran -2 31 ≤ p i <2 31 . Anda dapat berasumsi bahwa tidak ada dua entri berturut-turut yang identik.
Kode Anda harus memproses input semacam itu (termasuk kasus uji di bawah) dalam waktu kurang dari 10 detik pada PC desktop yang wajar.
Uji Kasus
Semua test case hanya input diikuti oleh output.
[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
agak ambigu?