Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เพิ่มค่าของนิพจน์ที่กำหนดใน C++


โจทย์

ได้รับจำนวนเต็มไม่เป็นศูนย์ 3 จำนวน a, b, c งานคือหาค่าสูงสุดที่เป็นไปได้โดยวางเครื่องหมายบวกและคูณระหว่างพวกเขาในลำดับใดก็ได้

โปรดสังเกตว่าการจัดเรียงตัวเลขใหม่ได้ แต่เครื่องหมายบวกและคูณต้องใช้ครั้งละ 1 ครั้ง

ถ้า a = 1, b = 3, c = 5 ค่าสูงสุดคือ 20 ดังนี้

(1 + 3) * 5 = 20

อัลกอริทึม

1. ถ้าตัวเลขทั้งหมดเป็นบวก บวก 2 ตัวเล็ก คูณกับตัวใหญ่สุด
2. ถ้ามี 2 ตัวบวก คูณ 2 ตัวบวก บวกตัวที่เหลือ
3. ถ้ามี 1 ตัวบวก คูณ 2 ตัวลบ บวกตัวที่เหลือ
4. ถ้าทั้งหมดเป็นลบ บวก 2 ตัวใหญ่สุด (น้อยที่สุดในค่าลบ) คูณกับตัวที่เหลือ

ตัวอย่างโค้ด

#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