Вопрос задан 20.06.2023 в 10:52. Предмет Информатика. Спрашивает Бегунов Ник.

СРОЧНО РЕШИТЕ ЗАДАЧУ ЯЗЫК С++ ДАЮ 80 БАЛЛОВ!!!!! В этой задаче от вас потребуется написать

функцию bool is_permutation(int* A, int* B, int size), которой дается два массива A и B, и она должна вернуть true, если массив B можно получить из массива A перестановкой элементов, и false, если нельзя. Считайте оба массива с клавиатуры, используйте функцию и выведите «YES» или «NO» в зависимости от того, что вернула функция. Формат входных данных На первой строке дано одно целое число N (1 ≤ N ≤ 100) — количество элементов в массивах. В второй строке заданы целые числа, не превосходящие 230 по абсолютной величине, — элементы первого массива. В третьей строке в том же формате — элементы второго массива. Формат выходных данных Требуется вывести «YES», если можно получить второй массив из первого перстановкой элементов, и «NO», если нельзя. входные данные 4 1 2 3 4 4 3 2 1 5 1 2 3 2 1 1 2 2 3 3 выходные данные YES NO
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Остапец Лера.

Объяснение:

В общем сделал так чтобы проверялись вообще все возможные перестановки чисел, а не одинарные

#include <iostream>

using namespace std;

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

int main()

{

int *A, *B, N;

bool result;

cin >> N;

A = new int[N];

B = new int[N];

for (int i = 0; i < N; i++) cin >> A[i];

for (int i = 0; i < N; i++) cin >> B[i];

result = is_permutation(A, B, N);

if (result) cout << "YES";

else cout << "NO";

return 0;

}

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

{

int CountInA, CountInB;

for (int i = 0; i < size; i++) { // Перебираем по одному все элементы массива B

 CountInA = 0;

 CountInB = 0;

 for (int j = 0; j < size; j++)

 {

  if (B[i] == A[j]) CountInA++; // Считаем сколько раз этот элемент встретился в массиве А

  if (B[i] == B[j]) CountInB++; // Считаем сколько раз этот элемент встретился в массиве B

 }

 if (CountInA != CountInB) return false;// Если счётчики не совпали, то сразу выходим из цикла

}

return true;// Если счётчики всегда совпадали, то мы попадём сюда и массивы состоят из одинакового количества одинаковых элементов

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи необходимо выполнить следующие шаги:

1. Создать функцию с именем `is_permutation`, которая будет принимать два указателя на массивы `a` и `b`, а также размер массивов `size`. 2. Внутри функции определить переменные `count_a` и `count_b` для подсчета количества вхождений каждого элемента в массивах `a` и `b соответственно. 3. Инициализировать массив `count` размером `size+1` и заполнить его нулями. Этот массив будет использоваться для подсчета количества вхождений элементов массива `a`. 4. Пройтись по элементам массива `a` и увеличивать значение соответствующего элемента в массиве `count`. 5. Пройтись по элементам массива `b` и уменьшать значение соответствующего элемента в массиве `count`. 6. Пройти по элементам массива `count` и если хотя бы одно значение элемента не равно нулю, то вернуть `false`, так как это означает, что массив `b` не является перестановкой массива `a`. 7. В конце функции вернуть `true`, так как все проверки пройдены успешно и массив `b` является перестановкой массива `a`.

Пример решения на языке C++:

```cpp #include using namespace std;

bool is_permutation(int* a, int* b, int size) { int count_a[size+1] = {0}; int count_b[size+1] = {0};

// Подсчет количества элементов в массиве a for (int i = 0; i < size; i++) { count_a[a[i]]++; }

// Подсчет количества элементов в массиве b for (int i = 0; i < size; i++) { count_b[b[i]]++; }

// Сравнение количества элементов в массивах a и b for (int i = 0; i <= size; i++) { if (count_a[i] != count_b[i]) { return false; } }

return true; }

int main() { int n; cin >> n;

int a[n]; int b[n];

for (int i = 0; i < n; i++) { cin >> a[i]; }

for (int i = 0; i < n; i++) { cin >> b[i]; }

if (is_permutation(a, b, n)) { cout << "yes" << endl; } else { cout << "no" << endl; }

return 0; } ```

Пример входных данных: ``` 4 1 2 3 4 4 3 2 1 ``` Пример выходных данных: ``` yes ```

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос