帮助彼得找到两根栅栏,它们与道路一起形成一个面积最大的矩形区域,并打印这个面积。
所有部分的宽度相同且等于 1。
输入(转到标准输入)
程序的输入是一行,其中包含一个整数数组length,其中length[i]是第 i 个栅栏的长度。换句话说,数组的第 th 个元素以从到 的i线段形式指定栅栏,其中是道路。(i, 0)(i, length[i])0
而且0 ≤ length[i] ≤ 10 000,栅栏的数量也n满足条件2 ≤ n ≤ 100 000。
我们测试的所有输入数据始终遵循指定的参数,不需要额外的检查。
输出(预期为标准输出)
一个整数,形成的面积的最大面积。
实施例1
输入:
2 4 3 2 1 4 1
结论:
16
在第一个示例中,最大的区域形成在长度为 4 的两个栅栏之间。
实施例2
输入:
1 2
结论:
1
在此示例中,第二个栅栏未使用其整个长度,因为我们只对矩形区域感兴趣。
我的代码:
line = input()
length = [int(item) for item in line.split()]
max_area = 0
if length[0] > 0 and length[1] > 0:
max_area = 1
for left in range(0, len(length) - 1):
for right in range(left + 1, min(left + 1 + length[left], len(length))):
min_length = min(length[left], length[right])
width = right - left
if min_length == width:
max_area = max(max_area, min_length * width)
print(max_area)
测试通过了。但答案是错误的。程序的输出与预期不符。这有什么问题吗?