Задать вопрос
4 августа, 14:32

C++

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

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

+2
Ответы (1)
  1. 4 августа, 15:51
    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, и ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Выберите логическое выражение, принимающее значение True a) (True and True) and (False or False) b) Not (True and Not False) or False c) (True or False) or Not (True and True) d) Not (True or False) and True
Ответы (1)
1. Вычислите логические выражения: not true and not false not true or not false not (true or false) not (true and false) 2. Напишите условие нахождения точки a в первом квадранте системы координат, считая ее координаты заданными X переменными x, y.
Ответы (1)
Помогите решить задачи на паскаль. 1) Дан массив случайных чисел (количество элементов вводите с клавиатуры). Найти произведение всех элементов массива. 2) Дан массив случайных чисел (количество элементов вводите с клавиатуры).
Ответы (1)
Переведите программу в Free Pascal var A: Array [1 ... 100] of integer; size: integer; Even: integer; notEven: integer; begin Write ('Set size A : ') ; Read (size) ; for i:integer : = 1 to size do begin Write ('Set A[', i, ']: ') ; Read (A[i]) ; end;
Ответы (2)
1. Массив и 4 целых чисел вводится с клавиатуры. Найти и вывести произведение элементов массива. 2. Массив из 6 отрицательных и положительных целых чисел вводится в области описания констант. Найти сумму положительных элементов массива. 3.
Ответы (1)