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