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

ตรวจสอบการจัดวางถ้วยและจานรองให้เรียบร้อยได้ใน C++


แนวคิด

กำหนดถ้วย 3 ประเภท p[] และจานรอง 3 ประเภท q[] พร้อมชั้นวาง m ชั้น ตรวจสอบว่าจัดได้เรียบร้อยหรือไม่

กติกาการจัด

  1. ชั้นใดชั้นหนึ่งไม่สามารถมีทั้งถ้วยและจานรองร่วมกัน
  2. ถ้วยต่อชั้นสูงสุด 5 ใบ
  3. จานรองต่อชั้นสูงสุด 10 ใบ

ตัวอย่างที่ 1

Input: p[] = {4, 3, 7}, q[] = {5, 9, 10}, m = 11
Output: Yes
ถ้วยรวม 14 → ต้องการชั้น ⌈14/5⌉ = 3
จานรวม 24 → ต้องการชั้น ⌈24/10⌉ = 3
รวม 6 ชั้น ≤ 11 → Yes

ตัวอย่างที่ 2

Input: p[] = {5, 8, 5}, q[] = {4, 10, 11}, m = 3
Output: No
ถ้วยรวม 18 → 4 ชั้น, จานรวม 25 → 3 ชั้น, รวม 7 ชั้น > 3 → No

สูตรคำนวณ

ชั้นสำหรับถ้วย = (sum_p + 5 - 1) / 5 (Pseudo-ceiling)
ชั้นสำหรับจาน = (sum_q + 10 - 1) / 10

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

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

void canArrange1(int p[], int q[], int m) {
    int sump = 0, sumq = 0;
    for (int i = 0; i < 3; i++) sump += p[i];
    for (int i = 0; i < 3; i++) sumq += q[i];
    
    int mp = (sump + 5 - 1) / 5;
    int mq = (sumq + 10 - 1) / 10;
    
    if (mp + mq <= m)
        cout << "Yes";
    else
        cout << "No";
}

int main() {
    int p[] = {4, 3, 7};
    int q[] = {5, 9, 10};
    int m = 10;
    canArrange1(p, q, m);
    return 0;
}

ผลลัพธ์

Yes