Задать вопрос
8 апреля, 02:58

C++

В этой задаче от вас потребуется написать функцию bool is_permutation (int * A, int * B, int size), которой дается два массива A и B, и она должна вернуть true, если массив B можно получить из массива A перестановкой элементов, и false, если нельзя.

Считайте оба массива с клавиатуры, используйте функцию и выведите "YES" или "NO" в зависимости от того, что вернула функция.

+3
Ответы (1)
  1. 8 апреля, 06:50
    0
    Сортируем оба массива и проверяем, совпали ли они. Если совпали, то это перестановка.

    #include

    int * sorted (int * A, int size) {

    int * B = new int[size];

    for (int i = 0; i < size; + + i) B[i] = A[i];

    for (int i = 0; i < size - 1; + + i) {

    for (int j = i + 1; j < size; + + j) {

    if (B[i] > B[j]) {

    int t = B[i];

    B[i] = B[j];

    B[j] = t;

    }

    }

    }

    return B;

    }

    bool arr_eq (int * A, int * B, int size) {

    for (int i = 0; i < size; + + i) {

    if (A[i]! = B[i]) return false;

    }

    return true;

    }

    bool is_permutation (int * A, int * B, int size) {

    int * sA = sorted (A, size), * sB = sorted (B, size) ;

    bool is_perm = arr_eq (sA, sB, size) ;

    delete [] sA;

    delete [] sB;

    return is_perm;

    }

    int * read_arr_int (int size) {

    int * A = new int[size];

    for (int i = 0; i < size; + + i) {

    std::cin >> A[i];

    }

    return A;

    }

    int main () {

    int n = 0;

    std::cin >> n;

    int * A = read_arr_int (n), * B = read_arr_int (n) ;

    std::cout << (is_permutation (A, B, n) ? "YES" : "NO") ;

    delete [] A;

    delete [] B;

    return 0;

    }
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «C++ В этой задаче от вас потребуется написать функцию bool is_permutation (int * A, int * B, int size), которой дается два массива A и B, и ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы