C++程式,用於查詢可以從程式設計師集合中形成的組數


假設我們有一個包含n個元素的陣列A。A[i]表示第i個學生的程式設計技能。A中的所有元素都是不同的。我們希望將它們分成團隊,使得:

  • 沒有兩個學生i和j,使得|A[i] - A[j]| = 1屬於同一個團隊

  • 團隊數量儘可能少。

因此,如果輸入類似於A = [2, 3, 4, 99, 100],則輸出將為2,因為組為[2, 3, 4]和[99, 100]

步驟

為了解決這個問題,我們將遵循以下步驟:

dem := 1
sort the array A
for initialize i := 1, when i < size of A, update (increase i by 1), do:
   if A[i] - A[i - 1] is same as 1, then:
      dem := 2
   return dem

示例

讓我們看看下面的實現以獲得更好的理解:

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A) {
   int dem = 1;
   sort(A.begin(), A.end());
   for (int i = 1; i < A.size(); i++)
      if (A[i] - A[i - 1] == 1)
         dem = 2;
   return dem;
}
int main() {
   vector<int> A = { 2, 3, 4, 99, 100 };
   cout << solve(A) << endl;
}

輸入

{ 2, 3, 4, 99, 100 }

輸出

2

更新於: 2022年3月3日

382次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.