計算可組建的最大團隊數的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
廣告