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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告