Вопрос задан 31.10.2018 в 23:56. Предмет Информатика. Спрашивает Греков Егор.

Помогите, пожалуйста, написать программу в Паскале! Задано 2n целых чисел. Требуется разбить их на

пары, так, чтобы сумма произведений чисел в парах была как можно больше. Например, если заданы числа 1,2,3 и 4, то оптимальный способ разбиения на пары -(1,2) и (3,4). В этом случае искомая сумма равна 14. Требуется написать программу, которая по заданному числу n (1 меньше или ровно n и n меньше или ровно 100) и набору из 2n чисел выдаст их оптимальное рабиение на пары.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Васильев Павел.
Var
 n,i,j,c:integer;
 mas:array[1..999] of integer;

begin
 readln(n);
 for i:=1 to 2*n do
  readln(mas[i]);
 //Группируем массив в порядке возрастания
  for i := 1 to 2*n-1 do
   for j := 1 to 2*n-i do
    if mas[j] > mas[j+1] then
    begin
     c := mas[j];
     mas[j] := mas[j+1];
     mas[j+1] := c;
    end;
 writeln('Оптимальные пары:');
 for i:=1 to 2*n do
 begin
  if i mod 2 = 1 then
   write(mas[i],' и ');
  if i mod 2 = 0 then
   writeln(mas[i]);
 end;
end.
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Программа на Паскале, которая реализует задачу разбиения на пары:

```pascal program OptimalPairs;

const MAX_N = 100;

var n, i, j, sum, maxSum: integer; numbers: array[1..2*MAX_N] of integer; pairs: array[1..MAX_N] of integer;

procedure FindOptimalPairs(n: integer; numbers: array of integer; var pairs: array of integer); var i, j, sum, maxSum: integer; begin // Инициализация массива пар for i := 1 to n do pairs[i] := 0; // Расчет оптимального разбиения на пары maxSum := 0; for i := 1 to n do begin sum := 0; for j := i+1 to 2*n do begin sum := numbers[i] * numbers[j]; if sum > maxSum then begin maxSum := sum; pairs[i] := j; end; end; end; end;

begin // Ввод количества чисел write('Введите количество чисел (n): '); readln(n); // Ввод чисел writeln('Введите ', 2*n, ' чисел:'); for i := 1 to 2*n do begin write('Число ', i, ': '); readln(numbers[i]); end; // Вызов процедуры поиска оптимальных пар FindOptimalPairs(n, numbers, pairs); // Вывод оптимального разбиения на пары writeln('Оптимальное разбиение на пары:'); for i := 1 to n do writeln('(', numbers[i], ', ', numbers[pairs[i]], ')'); end. ```

Программа сначала запрашивает количество чисел `n`, а затем последовательно запрашивает `2n` чисел. После этого вызывается процедура `FindOptimalPairs`, которая находит оптимальное разбиение на пары и сохраняет информацию о парам в массив `pairs`. Затем программа выводит найденное оптимальное разбиение на пары.

0 0

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

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

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