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

โปรแกรม C++ หากำไรสูงสุดจากการขายแฮมเบอร์เกอร์และชิกเกอร์เบอร์เกอร์


คำอธิบายปัญหา

สมมติว่าเรามีตัวเลข 5 ตัวคือ b, p, f, h และ c มีเบอร์เกอร์ 2 ประเภท: แฮมเบอร์เกอร์และชิกเกอร์เบอร์เกอร์ แฮมเบอร์เกอร์ต้องการขนมปัง 2 ชิ้นและเนื้อวัว 1 ชิ้น ชิกเกอร์เบอร์เกอร์ต้องการขนมปัง 2 ชิ้นและอกไก่ 1 ชิ้น มีขนมปัง b ชิ้น เนื้อวัว p ชิ้น อกไก่ f ชิ้น ขายแฮมเบอร์เกอร์ราคา h บาท ชิกเกอร์เบอร์เกอร์ราคา c บาท ต้องการหากำไรสูงสุด

ตัวอย่าง: b = 7; p = 5; f = 2; h = 10; c = 12 ผลลัพธ์คือ 34 เพราะทำ 1 แฮมเบอร์เกอร์และ 2 ชิกเกอร์เบอร์เกอร์ รายได้ 1*10 + 2*12 = 34

ขั้นตอนการแก้ปัญหา

res := 0
b := b / 2
ถ้า h < c:
    สลับ p และ f
    สลับ h และ c
res := res + h * min(b, p) + c * min(max(b - p, 0), f)
คืนค่า res

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

#include <bits/stdc++.h>
using namespace std;

int solve(int b, int p, int f, int h, int c) {
    int res = 0;
    b /= 2;
    if (h < c) {
        swap(p, f);
        swap(h, c);
    }
    res += h * min(b, p) + c * min(max(b - p, 0), f);
    return res;
}

int main() {
    int b = 7;
    int p = 5;
    int f = 2;
    int h = 10;
    int c = 12;
    cout << solve(b, p, f, h, c) << endl;
}

อินพุต

7, 5, 2, 10, 12

เอาต์พุต

34