+11 投票
分类:编码思路 | 用户: 9 5 3 (2.5k 分)
修改于 用户:

【问题描述】

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。(提示:最大储水量为两条线中较短的一条线的长度和两条线之间的距离的乘积)

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

【输入形式】

英文[]包裹,英文,分割的若干自然数(即为数组height)

【输出形式】

一个自然数

【样例输入】

[1,8,4,3,7]

【样例输出】

21 

#盛水最多的容器

def maxArea(height):

    height = list(map(int, height))

    l,r = 0,len(height)-1

    area = min(height[l],height[r])*(r-l)

    while True:

        if l >= r:

            break

        if height[l]<height[r]:

            l += 1

        else: 

            r -= 1

        if min(height[l],height[r])*(r-l)>area:

            area = min(height[l],height[r])*(r-l)

    return area

nums = input()

nums = nums[1:-1]

num = nums.split(',')

sumarea = maxArea(num)

print(sumarea)

2 个回答

+2 投票
用户: 7 3 2 (700 分)
info = input()#样例输入
info = info[1:-1]#去除括号
lst = info.split(',')#将数装入列表

int_lst = []#将列表中数化为整数型
for a in lst:
    a = int(a)
    int_lst.append(a)

products = []#所有的容积可能性
for i in range(0,len(int_lst)):
    target = int_lst[i]
    for j in range(0,len(int_lst)):
        board = int_lst[j]
        if target <= board:
            height = target
        else:
            height = board
        if i - j >= 0:
            length = (i - j)
        else:
            length = (j - i)
        product = length*height
        products.append(product)

result = 0
for pro in products:
    if pro >= result:
        result = pro
print(result)
0 投票
用户: 5 1 (530 分)
height=eval(input())
squares=[]
t=0
for i in range(len(height)-1):
    for j in range(i+1,len(height)):
        squares.append(min(height[i],height[j])*(j-i))
        t+=1
print(max(squares))
欢迎来到 在线问答系统 ,有什么不懂的可以尽管在这里提问,你将会收到社区其他成员的回答。
...