计算可组建的最大团队数的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

更新于:2022年3月30日

浏览量:357

开启你的职业生涯

完成课程获得认证

开始学习
广告