Trong bài toán này, cho hai số nguyên N và M: N là số người nhóm 1, M là số người nhóm 2. Nhiệm vụ: viết chương trình tìm số đội 3 người tối đa hình thành từ hai nhóm.
Tạo đội 3 người bằng cách chọn từ các nhóm sao cho số đội tối đa. Mỗi đội phải có ít nhất 1 người từ mỗi nhóm.
Ví dụ minh họa
Đầu vào: N = 5, M = 3
Đầu ra: 2
Giải thích:
Đội 1: Nhóm 1 → 2 người; Nhóm 2 → 1 người. Còn lại: Nhóm 1 = 3, Nhóm 2 = 2 Đội 2: Nhóm 1 → 2 người; Nhóm 2 → 1 người. Còn lại: Nhóm 1 = 1, Nhóm 2 = 1 Không thể tạo thêm đội 3 người.
Phương pháp giải
Tạo đội bằng cách lấy 1 người từ nhóm ít người hơn và 2 người từ nhóm kia. Cập nhật số người mỗi nhóm. Duy trì bộ đếm số đội và tăng sau mỗi lần tạo đội cho đến khi không thể tạo thêm.
Chương trình C++
#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;
}
Kết quả
The maximum number of 3-person teams is 2
Công thức toán học
Kết quả cũng bằng: min(N, M, (N+M)/3) - lấy min của 3 giá trị này.