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

จำนวนแฮมเบอร์เกอร์ที่ทำได้โดยไม่มีวัตถุดิบเหลือทิ้งใน C++

สมมติว่าเรามีจำนวนเต็มสองจำนวนคือ 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 แผ่น

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

  1. สร้างอาร์เรย์ ans ไว้เก็บผลลัพธ์
  2. ถ้า tomato เป็นคี่ หรือ cheese > tomato/2 หรือ tomato > 4*cheese ให้คืน ans (ว่าง) ทันที
  3. คำนวณ x = (4 * cheese - tomato) / 2 (จำนวนแฮมเบอร์เกอร์ขนาดเล็ก)
  4. คำนวณ y = (tomato - (2 * x)) / 4 (จำนวนแฮมเบอร์เกอร์ขนาดใหญ่)
  5. นำ y แล้วตามด้วย x ใส่เข้า ans
  6. คืนค่า 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, ]