2017-09-08 5 views
-3

여기서 주요 목표는 두 개의 숫자 순서가 일치하는지 여부를 확인하는 것입니다. 예를 들어 ..., 8 7 4 5 1 2 및 80 70 40 50 10 12는 매칭 순서에있는 반면, 1 2 3 4 5 및 9 8 7 6 5는 일치하는 순서가 아닙니다.동등한 주문 확인

코드는 다음과 같습니다. 간단히하기 위해 두 시퀀스의 길이가 같다고 가정했습니다. 내 if-condition은 두 개의 동일한 (동일한) 숫자가있는 시퀀스를 제외하고 정확히 order equivalency를 찾습니다. 예를 들어, 1 2 2와 2 2 1은 동등한 순서는 아니지만 동등한 순서로 표시됩니다. 이것이 내가 고칠 주요 버그이다. 누군가이 if-condition으로 나를 도울 수 있다면, 좋을 것입니다. 내가 이해, 당신은 뭔가를 원하는에서

+0

당신은 = 및 <= 올바른지> 하시겠습니까? 그것이 1 2 2와 2 2 1 버그를 유발하는 것입니다. – Tyler

+0

'1223'과'1234 '는 동등해야합니까? – Jarod42

+0

그래, 같은 연속 요소가 없다면 작동하지. 처음 두 요소에 대해 ((8 <= 6) && (80 <= 60)) || ((8> = 6) && (80> = 60)), 두 번째 부분 이후 || true에 해당하면 if 문 전체가 true가됩니다. –

답변

0

:

int is_equivalency(const int* arr1, const int* arr2, int size) 
{ 
    for (int i = 0; i + 1 < size; ++i) { 
     int j = i + 1; 

     if ((arr1[i] == arr1[j] && arr2[i] != arr2[j]) 
      || (arr1[i] < arr1[j] && arr2[i] >= arr2[j]) 
      || (arr1[i] > arr1[j] && arr2[i] <= arr2[j])) 
     { 
      return 0; 
     } 
    } 
    return 1; 
} 

Demo