计算可组建的最大团队数的C++代码
对于两人一组的情况,两个学生要么都编写代码,要么都不编写代码。如果两人一组的两个学生要编写代码,他们必须在同一个团队中。
因此,如果输入类似于A = [2, 2, 2, 1, 1, 1, 1],则输出为3,因为导师可以组建以下团队:[第一组两人和第七组一人],[第二组两人和第六组一人],[第三组两人和第四组一人]。
步骤
为了解决这个问题,我们将遵循以下步骤:
p := 0 q := 0 x := size of A for initialize i := 0, when i < x, update (increase i by 1), do: a := A[i] if a is same as 1, then: p := p + 1 Otherwise q := q + 1 if p > q, then: return q + (p - q) otherwise when p < q, then: return p Otherwise return p
示例
让我们看看下面的实现来更好地理解:
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
int p = 0, q = 0;
int x = A.size();
for (int i = 0; i < x; i++){
int a = A[i];
if (a == 1){
p = p + 1;
}
else{
q = q + 1;
}
}
if (p > q){
return q + (p - q) / 3;
}
else if (p < q){
return p;
}
else{
return p;
}
}
int main(){
vector<int> A = { 2, 2, 2, 1, 1, 1, 1 };
cout << solve(A) << endl;
}输入
{ 2, 2, 2, 1, 1, 1, 1 }输出
3
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP