Files
hello-algo/ja/codes/cpp/chapter_greedy/max_capacity.cpp
T
Yudong Jin 7257641e0e Retranslate the complete Japanese online edition from Chinese (#2008)
* Retranslate the complete Japanese online edition from Chinese

* Fit Japanese homepage labels and localize heading permalinks

* Point Japanese contribution instructions to the Japanese preview

* Replace locale conditionals with multilingual UI tables
2026-10-30 02:12:26 +08:00

40 lines
958 B
C++

/**
* File: max_capacity.cpp
* Created Time: 2023-07-21
* Author: krahets ([email protected])
*/
#include "../utils/common.hpp"
/* 最大容量:貪欲法 */
int maxCapacity(vector<int> &ht) {
// i, j を初期化し、配列の両端をそれぞれ指すようにする
int i = 0, j = ht.size() - 1;
// 最大容量の初期値は 0
int res = 0;
// 2 枚の板が出会うまで貪欲な選択を繰り返す
while (i < j) {
// 最大容量を更新する
int cap = min(ht[i], ht[j]) * (j - i);
res = max(res, cap);
// 低い方の仕切り板を内側に移動する
if (ht[i] < ht[j]) {
i++;
} else {
j--;
}
}
return res;
}
/* 実行用コード */
int main() {
vector<int> ht = {3, 8, 5, 2, 7, 7, 3, 4};
// 貪欲アルゴリズム
int res = maxCapacity(ht);
cout << "最大容量は " << res << endl;
return 0;
}