ในปัญหานี้ เราได้รับจำนวนเต็มสองจำนวน N และ M, N คือจำนวนคนในกลุ่มที่ 1 และ M คือจำนวนคนในกลุ่มที่ 2 งานของเราคือการสร้าง โปรแกรมหาจำนวนทีมสูงสุด 3 คนจากสองกลุ่ม
เราจะสร้างทีมจำนวน 3 คน โดยเลือกบุคคลจากกลุ่มเหล่านี้เพื่อให้สร้างทีมได้สูงสุด แต่ละทีมต้องมีอย่างน้อยหนึ่งคนจากแต่ละกลุ่ม
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล − N =5, M =3
ผลผลิต − 2
คำอธิบาย −
ทีมจะเป็นดังนี้ -
Team 1: Group 1 Member->2 ; Group 2 Member->1 Left in Group 1 = 3 ; left in Group 2 = 2 Team 2: Group 1 Member->2 ; Group 2 Member->1 Left in Group 1 = 1 ; left in Group 2 = 1 No more teams of 3 can be formed.
เพื่อแก้ปัญหานี้ เราจะสร้างทีม รับกลุ่มสมาชิก 1 กลุ่มที่มีสมาชิกน้อยลงและสมาชิก 2 คนจากอีกกลุ่มหนึ่ง และอัพเดทจำนวนคนในแต่ละกลุ่ม นอกจากนี้ เราจะรักษา จำนวนทีมและเพิ่มหลังจากแต่ละทีมสร้าง จนกว่าจะสร้างทีมได้
ตัวอย่าง
โปรแกรมค้นหาจำนวนทีมสูงสุด 3 คนจากสองกลุ่ม −
#include <iostream> using namespace std; int CountTeams(int N, int M) { int teamCount = 0; while (N >= 1 && M >= 1 && N + M >= 3) { if (N > M) { N = N-2; M = M-1; } else { N = N-1; M = M-2; } teamCount++; } return teamCount; } int main() { int N = 5, M = 3; cout<<"The maximum number of 3-person teams is "<<CountTeams(N, M); return 0; }
ผลลัพธ์
The maximum number of 3-person teams is 2