Files
hello-algo/en/codes/c/chapter_greedy/max_capacity.c
Yudong Jin 2778a6f9c7 Translate all code to English (#1836)
* Review the EN heading format.

* Fix pythontutor headings.

* Fix pythontutor headings.

* bug fixes

* Fix headings in **/summary.md

* Revisit the CN-to-EN translation for Python code using Claude-4.5

* Revisit the CN-to-EN translation for Java code using Claude-4.5

* Revisit the CN-to-EN translation for Cpp code using Claude-4.5.

* Fix the dictionary.

* Fix cpp code translation for the multipart strings.

* Translate Go code to English.

* Update workflows to test EN code.

* Add EN translation for C.

* Add EN translation for CSharp.

* Add EN translation for Swift.

* Trigger the CI check.

* Revert.

* Update en/hash_map.md

* Add the EN version of Dart code.

* Add the EN version of Kotlin code.

* Add missing code files.

* Add the EN version of JavaScript code.

* Add the EN version of TypeScript code.

* Fix the workflows.

* Add the EN version of Ruby code.

* Add the EN version of Rust code.

* Update the CI check for the English version  code.

* Update Python CI check.

* Fix cmakelists for en/C code.

* Fix Ruby comments
2025-12-31 07:44:52 +08:00

50 lines
1.1 KiB
C

/**
* File: max_capacity.c
* Created Time: 2023-09-15
* Author: xianii (xianyi.xia@outlook.com)
*/
#include "../utils/common.h"
/* Find minimum value */
int myMin(int a, int b) {
return a < b ? a : b;
}
/* Find maximum value */
int myMax(int a, int b) {
return a > b ? a : b;
}
/* Max capacity: Greedy algorithm */
int maxCapacity(int ht[], int htLength) {
// Initialize i, j to be at both ends of the array
int i = 0;
int j = htLength - 1;
// Initial max capacity is 0
int res = 0;
// Loop for greedy selection until the two boards meet
while (i < j) {
// Update max capacity
int capacity = myMin(ht[i], ht[j]) * (j - i);
res = myMax(res, capacity);
// Move the shorter board inward
if (ht[i] < ht[j]) {
i++;
} else {
j--;
}
}
return res;
}
/* Driver Code */
int main(void) {
int ht[] = {3, 8, 5, 2, 7, 7, 3, 4};
// Greedy algorithm
int res = maxCapacity(ht, sizeof(ht) / sizeof(int));
printf("Maximum capacity is %d\n", res);
return 0;
}