สมมติว่าเรามีอาร์เรย์ 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