
СРОЧНО РЕШИТЕ ЗАДАЧУ ЯЗЫК С++ ДАЮ 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

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

Объяснение:
В общем сделал так чтобы проверялись вообще все возможные перестановки чисел, а не одинарные
#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;// Если счётчики всегда совпадали, то мы попадём сюда и массивы состоят из одинакового количества одинаковых элементов
}



Для решения данной задачи необходимо выполнить следующие шаги:
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
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 ```


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







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili