盛最多水的容器(10分)
- 问题描述
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器
- 输入
第一行 为容器个数n
第二行 n个数
- 输出
最大容量
- 输入样例
(1)9
1 8 6 2 5 4 8 3 7
(2)2
1 1
- 输出样例
(1)49
(2)1
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
int maxs = 0;
for(int i = 0;i < n;i++){
cin>>a[i];
}
int i = 0, j = n - 1;
while (i < j) {
int t = (j - i) * min(a[i], a[j]);
maxs = max(t, maxs);
if (a[i] < a[j]) {
i++;
} else {
j--;
}
}
cout<<maxs;
}