สมมติว่าเรามีจำนวนเต็มสองจำนวนคือ tomatoSlices (แผ่นมะเขือเทศ) และ cheeseSlices (แผ่นชีส) ซึ่งเป็นวัตถุดิบสำหรับทำแฮมเบอร์เกอร์สองประเภท ดังนี้
- แฮมเบอร์เกอร์ขนาดใหญ่ (Jumbo Burger): ใช้ 4 แผ่นมะเขือเทศ และ 1 แผ่นชีส
- แฮมเบอร์เกอร์ขนาดเล็ก (Small Burger): ใช้ 2 แผ่นมะเขือเทศ และ 1 แผ่นชีส
เราต้องหาค่า [total_jumbo, total_small] ที่ทำให้แผ่นมะเขือเทศและแผ่นชีสเหลือเป็นศูนย์พอดี หากทำไม่ได้ ให้คืนค่าเป็นอาร์เรย์ว่าง [] ตัวอย่างเช่น หาก tomatoSlices = 16 และ cheeseSlices = 7 ผลลัพธ์จะเป็น [1, 6] หมายถึง ทำแฮมเบอร์เกอร์ขนาดใหญ่ 1 ชิ้น และขนาดเล็ก 6 ชิ้น จะใช้มะเขือเทศ 4×1 + 2×6 = 16 แผ่น และชีส 1 + 6 = 7 แผ่น
ขั้นตอนการแก้ปัญหา
- สร้างอาร์เรย์
ansไว้เก็บผลลัพธ์ - ถ้า
tomatoเป็นคี่ หรือcheese > tomato/2หรือtomato > 4*cheeseให้คืนans(ว่าง) ทันที - คำนวณ
x = (4 * cheese - tomato) / 2(จำนวนแฮมเบอร์เกอร์ขนาดเล็ก) - คำนวณ
y = (tomato - (2 * x)) / 4(จำนวนแฮมเบอร์เกอร์ขนาดใหญ่) - นำ
yแล้วตามด้วยxใส่เข้าans - คืนค่า
ans
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v) {
cout << "[";
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ", ";
}
cout << "]" << endl;
}
class Solution {
public:
vector<int> numOfBurgers(int t, int c) {
vector<int> ans;
if (t % 2 != 0 || c > t/2 || t > c*4) return ans;
int x = (4 * c - t) / 2;
int y = (t - (2 * x)) / 4;
ans.push_back(y);
ans.push_back(x);
return ans;
}
};
int main() {
Solution ob;
print_vector(ob.numOfBurgers(16, 7));
}
Input
16 7
Output
[1, 6, ]