C++中計算大小為3的組的最大數量,其中包含兩種型別的專案


給定任務是計算當給出N個型別A的專案和M個型別B的專案時,可以形成的最大數量的大小為3的組。

此外,每個組都應該至少包含一個每種型別的專案,即A或B。

現在讓我們用一個例子來理解我們必須做什麼 -

輸入 - N=3,M=5

輸出 - 2

解釋

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.

輸入 - N=5,M=9

輸出 - 4

下面程式中使用的途徑如下

  • 以下情況可以分為4種情況 -

    • 情況1 -

      當M>=2N時,最大可能的組數 = M

    • 情況2 -

      當N>=2M時,最大可能的組數 = N

    • 情況3 -

      當(M+N) % 3 == 0時,最大可能的組數 = (M+N)/3

    • 情況4 -

      當以上條件都不成立時,最大情況數變為(M+N)/3 + (任何剩餘組)。

      要檢查是否有任何剩餘組,請設定N=N%3和M=M%3以獲得兩種型別的剩餘專案,然後使用以下條件進行檢查 -

      如果( N!=0 && M!=0 && (N+M)>=3)

      如果上述條件為真,則將1加到最終結果。

  • 在函式MaxGrp()中,使用if條件檢查上述情況

  • 如果If( M>=2*N )為真,則返回M作為答案。否則If( N>=2*M )為真,則返回N作為答案。

  • 如果以上兩個條件都不成立,則檢查if( (M + N)%3 == 0 )。如果為真,則返回(M + N)/3作為答案。

  • 如果以上條件都不成立,則初始化一個int型別的變數count = (M + N)/3。

    設定N=N%3和M=M%3,並使用情況4中上述規定的條件檢查是否有任何剩餘組。如果條件為真,則將1加到count並返回答案。

示例

 即時演示

#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;
}

輸出

如果我們執行以上程式碼,我們將得到以下輸出 -

4

更新於: 2020年8月17日

144 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.