考虑一条字符串(如“绳子”,而不是“一串字符”),该字符串在实线上来回折叠。我们可以通过(按顺序)通过的点列表来描述字符串的形状。为了简单起见,我们假定所有这些点都是整数。
举个例子[-1, 3, 1, -2, 5, 2, 3, 4]
(注意,并非每个条目都包含一个折叠):
沿垂直方向延伸的字符串仅用于可视化目的。想象一下,所有的弦线都扁平化到了实线上。
现在的问题是:一次切割就可以切成最大的弦数(在上图中必须是垂直的)。在这种情况下,答案是6,且在2
和之间的任意位置都有一个割线3
:
为了避免歧义,切口具有在一个非整数的位置被执行。
挑战
给定一串可折叠的整数位置列表,您将确定一次可在非整数位置进行一次切割即可切割的最大片段数。
您可以编写完整的程序或函数。您可以通过STDIN,命令行参数,提示符或函数参数进行输入。您可以将输出写入STDOUT,在对话框中显示或从函数返回。
您可以假定该列表采用任何方便的列表或字符串格式。
该列表将包含至少2个且不超过100个条目。入口将整数,每个范围-2 31 ≤p 我 <2 31。您可以假定没有两个连续的条目相同。
您的代码必须在合理的台式PC上在不到10秒的时间内处理任何此类输入(包括下面的测试用例)。
测试用例
所有测试用例只需输入,然后输出即可。
[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
很am昧吗?