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