在 C++ 中最大化給定表示式的值
問題陳述
給出三個非零整數 a、b 和 c。任務是透過在它們之間以任意順序新增加號和乘號來找到可能的最大值。
請注意,允許重新排列整數,但必須使用加號和乘號一次。
如果 a = 1、b = 3 和 c = 5,則最大值為 20,如下所示−
(1 + 3) * 5 = 20
演算法
1. If all numbers are positive, then add two small numbers and multiply result with larger one 2. If only two numbers are positive, then multiply 2 positive numbers and add remaining number 3. If only one number is positive, then multiply 2 negative number and add remaining number 4. If all numbers are negative, then add two largest integers and multiply then with remaining number
示例
#include <bits/stdc++.h>
using namespace std;
int getMaximumResult(int a, int b, int c){
int negativeCnt = 0;
int sum = a + b + c;
int mul = a * b * c;
int largest = max(a, max(b, c));
int smallest = min(a, min(b, c));
if (a < 0) {
++negativeCnt;
}
if (b < 0) {
++negativeCnt;
}
if (c < 0) {
++negativeCnt;
}
if (negativeCnt == 0) {
return (sum - largest) * largest;
}
else if (negativeCnt == 1) {
return (mul / smallest) + smallest;
}
else if (negativeCnt == 2) {
return (mul / largest) + largest;
}
else if (negativeCnt == 3) {
return (sum - smallest) * smallest;
}
}
int main(){
int a = 1, b = 3, c = 5;
cout << "Maximum value = " << getMaximumResult(a, b, c) << endl;
return 0;
}輸出
當您編譯和執行上述程式時。它會生成以下輸出−
Maximum value = 20
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
安卓
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP