2
计算最大栅栏布置
背景 我要建篱笆。为此,我收集了一堆电线杆,并将其固定在地面上。我还收集了很多木板,将它们钉在电线杆上,以制作实际的围栏。我在建造东西时往往会被带走,很可能我会一直把木板钉在电线杆上,直到没有更多的地方放它们了。我想让你列举出我最终可能会遇到的障碍。 输入项 您的输入是一个二维整数坐标列表,以任何方便的格式表示极点的位置。您可以假定它不包含任何重复项,但是不能假设有关其顺序的任何信息。 这些板由两极之间的直线表示,为简单起见,我们仅考虑水平和垂直板。如果两极之间没有其他极或板,则可以将它们连接在一起,这意味着两板不能互相交叉。如果不能在其中添加新的板,则极和板的布置是最大的(等效地,在任何两个水平或垂直对齐的极之间有一个极或一个板)。 输出量 您的输出是可以使用极点构造的最大排列数。 例 考虑输入清单 [(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)] 从顶部看,杆的相应排列如下所示: o o o o o o o o 可以使用这些极点构造三种最大的排列方式: o o o o-o o|o o-o o----o o||| o o| | o o-o o|o o-o o o o 因此正确的输出是3。 规则 您可以编写函数或完整程序。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 [] -> 1 [(0,0),(1,1),(2,2)] -> 1 [(0,0),(1,0),(2,0)] -> …