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

asli121 asli121    3   14.06.2019 06:40    0

Ответы
loveinyourhard loveinyourhard  10.07.2020 22:57
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.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика