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
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP