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