Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 두 배열 간의 호환성 차이 찾기

<시간/>

두 명의 친구가 있고 이제 그들은 그들의 유대감을 시험하려고 한다고 생각해 보십시오. 그래서 그들은 얼마나 호환되는지 확인할 것입니다. 숫자 n이 주어지면 1..n부터 번호가 매겨집니다. 그리고 그들은 숫자의 순위를 매기도록 요청받습니다. 그들은 그들 사이의 호환성 차이를 찾아야 합니다. 호환성 차이는 기본적으로 동일한 영화의 상대적 순위에서 일치하지 않는 수입니다. 따라서 A =[3, 1, 2, 4, 5]이고 B =[3, 2, 4, 1, 5]이면 출력은 2가 됩니다. 호환성 차이는 2입니다. 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