Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาจำนวนกลุ่มได้จากชุดโปรแกรมเมอร์


สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n A[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