สมมติว่าเรามีตัวเลขห้าตัว b, p, f, h และ c มีเบอร์เกอร์สองประเภทในร้านอาหาร เหล่านี้เป็นแฮมเบอร์เกอร์และเบอร์เกอร์ไก่ แฮมเบอร์เกอร์ต้องการขนมปังสองก้อนและขนมพายเนื้อ สำหรับเบอร์เกอร์ไก่ เราต้องการขนมปังสองชิ้นและชิ้นไก่ชิ้นหนึ่ง เรามี บี บัน พี พายเนื้อ เอฟ ไก่ทอด เรากำลังพยายามขายแฮมเบอร์เกอร์ในราคารูปีและเบอร์เกอร์ไก่ในราคารูปีซี เราต้องหากำไรสูงสุดที่เราจะได้รับ
ดังนั้นหากอินพุตเป็นเหมือน b =7; พี =5; ฉ =2; ชั่วโมง =10; c =12 ผลลัพธ์จะเป็น 34 เพราะสำหรับแฮมเบอร์เกอร์หนึ่งชิ้นและเบอร์เกอร์ไก่สองตัว รายได้ 1*10 + 2*12 =34
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
res := 0 b := b / 2 if h < c, then: swap p and f swap h and c res := res + h * (minimum of b and p) + c * minimum of the (maximum of (b - p) and 0) and f) return res
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#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