Member 14826587 Ответов: 1

Вы можете так печатать?


Учитывая два несортированных массива A размера N и B размера M различных элементов, задача состоит в том, чтобы найти все пары из обоих массивов, сумма которых равна X.

Ввод:
Первая строка входных данных содержит целое число T, обозначающее отсутствие тестовых случаев. Затем следуют T тестовых случаев. Каждый тестовый случай содержит 3 строки . Первая строка содержит 3 целых числа, разделенных пробелами N, M, X. Затем в следующих двух строках находятся разделенные пробелами значения массива A и B соответственно.

Выход:
Для каждого тестового случая в новой строке выведите сортированные значения всех пар u,v, где u принадлежит массиву A, а v принадлежит массиву B, так что каждая пара отделена от другой символом', 'без кавычек, а также добавьте пробел после','. Если такой пары не существует, выведите -1.

Ограничения:
1 <= T <= 100
1 <= N, M, X <= 106
-106 <= A, B <= 106

Пример:
Ввод:
2
5 5 9
1 2 4 5 7
5 6 3 4 8
2 2 3
0 2
1 3
Выход:
1 8, 4 5, 5 4
0 3, 2 1

Объяснение:
Тестовый Кейс 1: (1, 8), (4, 5), (5, 4) это пары, сумма которых равна 9.

Что я уже пробовал:

// C++ program to find all pairs in both arrays 
// whose sum is equal to given value x 
#include <bits/stdc++.h> 

  

using namespace std; 

  
// Function to print all pairs in both arrays 
// whose sum is equal to given value x 

void findPairs(int arr1[], int arr2[], int n, 

               int m, int x) 
{ 

    for (int i = 0; i < n; i++) 

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

            if (arr1[i] + arr2[j] == x) 

                cout << arr1[i] << " "

                     << arr2[j] << endl; 
} 

  
// Driver code 

int main() 
{ 

    int arr1[] = { 1, 2, 3, 7, 5, 4 }; 

    int arr2[] = { 0, 7, 4, 3, 2, 1 }; 

    int n = sizeof(arr1) / sizeof(int); 

    int m = sizeof(arr2) / sizeof(int); 

    int x = 8; 

    findPairs(arr1, arr2, n, m, x); 

    return 0; 
} 

1 Ответов

Рейтинг:
5

CPallini

Да, я могу.:

void findPairs(int arr1[], int arr2[], int n,

               int m, int x)
{

    bool first_time = true;

    for (int i = 0; i < n; i++)

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

            if (arr1[i] + arr2[j] == x)
            {
                if ( first_time )
                  first_time = false;
                else
                  cout << ", ";
                cout << arr1[i] << " " << arr2[j];
            }
    cout << endl;
}


Maciej Los

5ed!