給三個整數 a, b, c,只能用 + 和 * 以及括號,求表達式最大值。
只有 5 種本質不同的括號方式:
a + b + ca * b + ca * b * ca * (b + c)(a + b) * c直接計算取最大值即可。數據範圍小,無需複雜 DP。
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int a, b, c;
while (scanf("%d%d%d", &a, &b, &c) == 3) {
int ans = a + b + c;
ans = max(ans, a * b + c);
ans = max(ans, a * b * c);
ans = max(ans, a * (b + c));
ans = max(ans, (a + b) * c);
printf("%d\n", ans);
}
return 0;
}
O(1) 每測試用例,極簡高效。