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

โค้ด C++ นับกลุ่มสูงสุดที่จัดได้

โจทย์: มีกลุ่มนักศึกษา n กลุ่ม ค่า 1 = คนเดี่ยว (ทำงานกับใครก็ได้) ค่า 2 = คู่ (ต้องอยู่ทีมเดียวกันหรือไม่อยู่ด้วยกัน) ที่ปรองษาต้องการทีมละ 3 คน หาจำนวนทีมสูงสุด

Input: A=[2,2,2,1,1,1,1] → Output: 3 (จับคู่ 2+1, 2+1, 2+1 เหลือ 1 คนเดี่ยวจับไม่ได้)

ขั้นตอนแก้

p := count of 1, q := count of 2
if p > q: return q + (p-q)/3
else if p < q: return p
else: return p

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

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
    int p = 0, q = 0;
    for (int a : A) {
        if (a == 1) p++;
        else q++;
    }
    if (p > q) return q + (p - q) / 3;
    else if (p < q) return p;
    else return p;
}
int main() {
    vector<int> A = {2,2,2,1,1,1,1};
    cout << solve(A) << endl;
}

Input

{2,2,2,1,1,1,1}

Output

3