NC54250. 装水容器
描述
输入描述
题目有多组数据,第一行 T 表示数据组数
每组数据第一行 n
接下来一行为 n 个木板的高度,空格分隔。
输出描述
给出每组能容纳最多的水的体积。
示例1
输入:
1 9 1 8 6 2 5 4 8 3 7
输出:
49
JavaScript V8 解法, 执行用时: 12ms, 内存消耗: 5016K, 提交时间: 2022-11-13 11:31:38
var T = readline() for(var q = 0;q<T;q++){ var n = readline() var arr = readline().split(' ') var max = 0; for(var i= 0;i<n-1;i++){ var left = arr[i] for(var j= 1;j<n;j++){ var min = Math.min(left,arr[j]) var len = j-i var num = min*len max = Math.max(num,max) } } console.log(max) }
C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 408K, 提交时间: 2019-10-26 00:30:25
#include<iostream> #include<algorithm> using namespace std; int main() { int T; cin>>T; for(int i=1;i<=T;i++) { int imax=0; int n,a[100]; cin>>n; for(int i=0; i<n;i++)cin>>a[i]; for(int k=0; k<n;k++) for (int j=k;j<n;j++) { if (k==j)continue; int imin=min(a[k],a[j])*(j-k); imax=max(imin,imax); } cout<<imax<<endl; } return 0; }
C++ 解法, 执行用时: 4ms, 内存消耗: 312K, 提交时间: 2022-07-11 16:56:44
#include<bits/stdc++.h> using namespace std; int main(){ int T; cin>>T; while(T--){ int n; cin>>n; vector<int> s(n); for(int i=0; i<n; i++)cin>>s[i]; int M=0; int i=0,j=n-1; while(i<j){ int k=min(s[i],s[j])*(j-i); if(s[i]>s[j])j--; else i++; M=max(M,k); } cout<<M<<endl; } return 0; }