Логика для определения того, являются ли две числовые последовательности эквивалентными по порядку - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу определить, являются ли две последовательности «эквивалентными по порядку», где я имею в виду две последовательности: a и b - эквивалентные по порядку, если они имеют одинаковое числоэлементы, и они оба содержат менее двух чисел или, если для всех i, j, 1 <= i, j <= n, где n - длина последовательности a [i] <= a [j] тогда и только тогда, когда b [я] <= b [j] </p>

Я написал небольшую программу на C вместе с набором тестовых случаев

include <stdio.h>

int main() {
    // Should be true, and is
//    int a[1] = {12};
//    int b[1] = {8};

    // Should be true, and is
//    int a[3] = {1, 2, 3};
//    int b[3] = {12, 32, 43};

    // Should be true, and is
//    int a[3] = {12, 45, 78};
//    int b[3] = {1, 2, 3};

    // Should be true, and is
//    int a[6] = {7, 5, 9, 13, 12};
//    int b[6] = {4, 2, 25, 33, 26};

    // Should be true, and is
//    int a[3] = {1, 1, 1};
//    int b[3] = {1, 1, 1};

    // Should be false, and is
//    int a[4] = {12, 1, 2, 3}; // because there is a decrease between 12 and 1
//    int b[4] = {3, 4, 5, 6}; // but an increase between 3 and 4

    // Should be true, but for some reason is not
    int a[6] = {23, 55, 22, 33, 9, 18};
    int b[6] = {21, 43, 11, 22, 7, 11};

    int size_of_arrays = 6; // set this to the correct value depending on values being tested

    int are_equivalent = 1;
    for (int m = 0; m < size_of_arrays; m = m + 1){
        for (int n = 0; n < size_of_arrays; n = n + 1){
            if ((a[m] <= a[n]) != (b[m] <= b[n])){
                are_equivalent = 0;
            }
        }
    }
    if (are_equivalent == 1) {
        printf("The two sequences are order equivalent.");
    } else {
        printf("The two sequences are not order equivalent.");
    }
    return 0;
}

, но последний тестовый пример, в частности, бросает меня запетля (каламбур).В некоторых случаях моя логика не распространяется, но я не могу ее увидеть.Есть идеи, что я могу упустить?

...