Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

그룹의 수를 찾는 C++ 프로그램은 프로그래머 세트에서 구성할 수 있습니다.

<시간/>

n개의 요소가 있는 배열 A가 있다고 가정합니다. A[i]는 i번째 학생의 프로그래밍 기술을 나타냅니다. A의 모든 요소는 고유합니다. 우리는 다음과 같은 방식으로 그들을 팀으로 나누고 싶습니다 -

  • |A[i] - A[j]|와 같은 두 명의 학생 i와 j가 없습니다. =1은 같은 팀에 속함

  • 팀 수는 가능한 한 최소입니다.

따라서 입력이 A =[2, 3, 4, 99, 100]과 같으면 그룹이 [2, 3, 4] 및 [99, 100]

이므로 출력은 2가 됩니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

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