मान लें दो दोस्त हैं और अब वे अपनी बॉन्डिंग टेस्ट करना चाहते हैं। तो वे जांचेंगे कि वे कितने कम्पैटिबल हैं। 1..n तक की संख्या n दी गई है। और उनसे संख्याओं को रैंक करने के लिए कहा जाता है। उन्हें उनके बीच कम्पैटिबिलिटी अंतर ढूंढना है। कम्पैटिबिलिटी अंतर मूल रूप से उनके द्वारा दी गई एक ही मूवी की सापेक्ष रैंकिंग में बेमेल की संख्या है। इसलिए यदि A = [3, 1, 2, 4, 5], और B = [3, 2, 4, 1, 5], तो आउटपुट 2 होगा। कम्पैटिबिलिटी अंतर 2 है, क्योंकि पहला मूवी 1 को 2 और 4 से पहले रैंक करता है लेकिन दूसरा इसे बाद में रैंक करता है।
इसे हल करने के लिए, हम दोनों ऐरे को पार करेंगे, जब वर्तमान तत्व समान हों, तो कुछ न करें। फिर 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