Computer >> Máy Tính >  >> Lập trình >> C ++

Số lượng nhóm tối đa có kích thước 3 chứa hai loại mục trong C ++


Nhiệm vụ được giao là tính toán số lượng nhóm cỡ 3 tối đa có thể được hình thành khi N số lượng mặt hàng loại A và M số lượng mặt hàng loại B. P>

Ngoài ra, mỗi nhóm nên có ít nhất một mục thuộc mỗi loại, đó là A hoặc B.

Bây giờ chúng ta hãy hiểu những gì chúng ta phải làm bằng cách sử dụng một ví dụ -

Đầu vào - N =3, M =5

Đầu vào - 2

Giải thích

Group 1: 1 item of type A and 2 items of type B
Group 2: 1 item of type A and 2 items of type B
In total, 2 items of type A and 4 items of type B are used.

Đầu vào - N =5, M =9

Đầu vào - 4

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Tình huống sau có thể được chia thành 4 trường hợp -

    • Trường hợp 1 -

      Khi M> =2N, thì số nhóm tối đa có thể =M

    • Trường hợp 2 -

      Khi N> =2M, thì số nhóm tối đa có thể =N

    • Trường hợp 3 -

      Khi (M + N)% 3 ==0, thì số nhóm tối đa có thể =(M + N) / 3

    • Trường hợp 4 -

      Khi không có điều kiện nào ở trên là đúng thì số trường hợp tối đa trở thành (M + N) / 3 + (Bất kỳ nhóm nào còn lại).

      Để kiểm tra xem còn nhóm nào không, hãy đặt N =N% 3 và M =M% 3 để lấy các mục còn lại của cả hai loại và sau đó kiểm tra bằng cách sử dụng điều kiện sau -

      Nếu (N! =0 &&M! =0 &&(N + M)> =3)

      Nếu điều kiện trên là đúng, thì thêm 1 vào kết quả cuối cùng.

  • Trong hàm MaxGrp (), sử dụng if kiểm tra điều kiện cho các trường hợp trên

  • Nếu (M> =2 * N) đúng thì trả về M là câu trả lời. Khác Nếu (N> =2 * M) đúng thì trả về N là câu trả lời.

  • Nếu cả hai điều kiện trên đều không đúng, thì hãy kiểm tra xem ((M + N)% 3 ==0). Nếu đúng thì trả về (M + N) / 3 là câu trả lời.

  • Nếu không có điều kiện nào ở trên là đúng thì hãy khởi tạo biến đếm =(M + N) / 3 kiểu int.

    Đặt N =N% 3 và M =M% 3 và kiểm tra bất kỳ nhóm nào còn lại bằng cách sử dụng điều kiện đã nêu ở trên trong Trường hợp 4. Nếu điều kiện là đúng thì thêm 1 để đếm và trả về câu trả lời.

Ví dụ

#include<bits/stdc++.h>
using namespace std;
// Implements above mentioned steps.
int MaxGrp(int N, int M){
   if (N >= 2 * M)
      return N;
   if (M >= 2 * N)
      return M;
   if ((M + N) % 3 == 0)
      return (M + N)/3;
   int count = (M + N)/3;
   M %= 3;
   N %= 3;
   if (M && N && (M + N) >= 3)
      count++;
   return count;
}
int main(){
   int N = 5, M = 9;
   cout << MaxGrp(N, M);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

4