问题:如下图,把三维简化成二维,体积对应面积,那两块板就能盛水,而两块板能盛的水量取决于两者之间的短板,水量即为长度高度(长度为两块板之间的距离,高度即为短板的高度)
目标:求最大面积
思路:
已知条件:
1、面积=长度高度
2、第1块板与最后一块板之间的距离是最大的
结果:
当第1块板的高度<最后一块板时,面积中的高度=第1块板的高度
1)其他板要么比第1块板高,那他们之间的面积=第一块板的高度*它们之间的距离,明显要小于第1块板与最后1块板组成的面积
2)要么比第1块板矮
那他们之间的面积=其他板的高度(比第一块板矮)*它们之间的距离,明显也小于第1块板与最后1块板组成的面积
import operator
x = [6, 9, 8, 3, 5, 2, 10, 4] # 每块板的高度
i = 0
j = len(x)-1
area = []
while i < j:
if x[i] < x[j]:
area.append((i, j, (j-i)*x[i]))
i = i+1
else:
area.append((i, j, (j-i)*x[j]))
j = j-1
MAX = max(area, key=operator.itemgetter(2))
print(MAX)



