我正在练习problem。我创建了一个解决方案,但它仅针对特定的测试用例而失败。当一个矩形放置在另一个矩形上时(与先前放置的矩形相交)使得交叉区域大于limit
(提供输入)时,问题需要找到交叉矩形的最大数量。输入包含可供使用的不同矩形的边。
我的解决方案是将矩形放置在一侧放置最大宽度或长度以获得最大面积。此外,它遍历所有矩形,以查找是否添加到现有桩中的新矩形仍然会使交叉区域大于limit
。
有人可以帮助我找到解决方案中的错误吗?
class PilingRectsDiv2:
def getmax(self, X, Y, limit):
maxX = 200
maxY = 200
count = 0
for i in range(0,len(X)):
maxOfXandY = max(X[i],Y[i])
minOfXandY = min(X[i],Y[i])
if(min(maxX,maxOfXandY)*min(maxY,minOfXandY)>=limit):
maxX = min(maxX,maxOfXandY)
maxY = min(maxY,minOfXandY)
count += 1
if count==0:
count = -1
return count
失败的测试用例:
Args:
{{77, 134, 82, 80, 54, 104, 18, 114, 75, 24, 86, 167, 178, 150, 192, 10, 50, 192, 79, 151, 1, 16, 56, 177, 197, 127, 188, 63, 5, 142, 80, 165, 164, 137, 34}, {128, 42, 156, 153, 191, 115, 90, 166, 126, 102, 198, 9, 152, 102, 105, 3, 135, 21, 28, 39, 161, 32, 86, 44, 46, 152, 156, 58, 40, 74, 192, 194, 60, 167, 151}, 728}
预期产量:30
代码返回输出:29