দুটি বন্ধু বিবেচনা করুন যারা তাদের বন্ধন পরীক্ষা করতে চান। তাই তারা চেক করবেন, তারা কতটুকু কম্প্যাটিবল। 1 থেকে n পর্যন্ত সংখ্যা দেওয়া আছে। তাদেরকে সংখ্যাগুলো র্যাঙ্ক করার বলা হয়েছে। তাদের কম্প্যাটিবিলিটি ডিফারেন্স বের করতে হবে। কম্প্যাটিবিলিটি ডিফারেন্স মূলত একই মুভির সাপেক্ষ র্যাঙ্কিং-এ মিসম্যাচের সংখ্যা। সুতরাং যদি A = [3, 1, 2, 4, 5], এবং B = [3, 2, 4, 1, 5], তবে আউটপুট হবে ২। কম্প্যাটিবিলিটি ডিফারেন্স ২, কারণ প্রথমটি মুভি ১ কে ২ এবং ৪-এর আগে র্যাঙ্ক করেছে কিন্তু অন্যটি পরে র্যাঙ্ক করেছে।
এটি সমাধান করতে, আমরা উভয় অ্যারে ট্রভার্স করব, যখন কারেন্ট উপাদানগুলো একই হবে, তবে কিছু করব না। তারপর A এবং B-এর নেক্সট পজিশন খুঁজে বের করুন, পজিশন j হোক, একে একে B[j]-কে B[i]-তে সরিয়ে আনুন।
উদাহরণ
#include <iostream>
using namespace std;
int getArrayDiff(int A[], int B[], int n) {
int result = 0;
for (int i = 0; i < n; i++) {
if (A[i] != B[i]) {
int j = i + 1;
while (A[i] != B[j])
j++;
while (j != i) {
swap(B[j], B[j - 1]);
j--;
result++;
}
}
}
return result;
}
int main() {
int A[] = {3, 1, 2, 4, 5};
int B[] = {3, 2, 4, 1, 5};
int n = sizeof(A) / sizeof(A[0]);
cout << "Compatibility difference: " << getArrayDiff(A, B, n);
}
আউটপুট
Compatibility difference: 2