В компьютерной игре на экране в течение нескольких секунд высвечиваются два набора чисел, игрокам необходимо вычислить сумму чисел в каждом из наборов. Если результирующее число является нечетным для любого из двух наборов, то игрокам необходимо определить, будет ли обмен любыми числами между двумя наборами делать итоговую сумму четной в обоих наборах. Задача состоит в том, чтобы написать код для определения минимального количества свопов, необходимого для обеспечения того, чтобы результирующая сумма каждого из двух наборов чисел была равна, даже если нет возможности достичь этого, тогда выход t должен быть помечен как -1.
Пример 1:
Ввод:
4-> Значение N
(1,4, 20, 2)->arr1[] Элементы от a[0] до a[N-1]. где каждый элемент ввода разделен новой строкой.
4-> Значение M
(5,9, 6, 3)->arr2[] Элементы от a[0] до a[M-1]. где каждый элемент ввода разделен новой строкой.
Вывод: 1
Объяснение:
в массиве arr1[i] = (1,4,20,2) Сумма 1 @27 (нечетная) В массиве arr 20]=(5,9,6,3) Сумма 223 (нечетная)
Обмен и сделает Сумму1 и Сумму2 даже в массиве arr 10] (6.4,20,2) ( даже) В массиве arr2[0]=(5,9,1,3) (четный)
Поскольку для выравнивания сумм требуется только одна замена, выход равен 1
Пример 2:
4-> Значение N
((3,2,2)->arr 1[], Элементы от a[0] до a[N-1], где каждый входной элемент разделен новой строкой.
4 → Значение M
(2,9,6,3)->arr2[], Элементы от a[0] до a[M-1], где каждый входной элемент разделен новой строкой.
Выход:
0
Объяснение:
В массиве (четный) В массиве arr2 = (2.9.6.3) (четный), так как и Sum1, и Sum2 четны, выход равен 0
(указывает, что обмен не требуется).
Решение: –
import java.util.*; public class Template { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int sum = 0; int sum2 = 0; int arr[]= new int[n]; for(int i = 0; i < n ; i++){ arr[i] = sc.nextInt(); sum += arr[i]; } int m = sc.nextInt(); int arr2[] = new int[m]; for(int i = 0; i < m ; i++){ arr2[i] = sc.nextInt(); sum2 += arr2[i]; } if((sum%2 == 0 && sum2%2 == 1)||(sum%2 == 1 && sum2%2 == 0)){ System.out.println("-1"); } if(sum%2 == 0 && sum2%2 == 0){ System.out.println("0"); } if(sum%2 == 1 && sum2%2 == 1){ if(arr[0]%2==0){ for(int i = 0 ; i < m; i++) { if(arr2[i]%2!=0) { int temp = arr[0]; arr[0] = arr2[i]; arr2[i] =temp; } } System.out.println("1"); } else if(arr[0]%2!=0) { for(int i = 0 ; i < m; i++) { if(arr2[i]%2==0) { int temp = arr[0]; arr[0] = arr2[i]; arr2[i] =temp; } } System.out.println("1"); } } sc.close(); } }
Оригинал: “https://dev.to/gouravmpk/tcs-ninja-digital-coding-question-9ap”