ধরুন আমাদের n উপাদান সহ একটি অ্যারে A আছে। A[i] ith শিক্ষার্থীর প্রোগ্রামিং দক্ষতার প্রতিনিধিত্ব করে। 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