Помогите, пожалуйста, написать программу в Паскале!
Задано 2n целых чисел. Требуется разбить их на пары, так, чтобы сумма произведений чисел в парах была как можно больше.
Например, если заданы числа 1,2,3 и 4, то оптимальный способ разбиения на пары -(1,2) и (3,4). В этом случае искомая сумма равна 14. Требуется написать программу, которая по заданному числу n (1 меньше или ровно n и n меньше или ровно 100) и набору из 2n чисел выдаст их оптимальное рабиение на пары.
Ответы
Ответ дал:
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.
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.
Вас заинтересует
1 год назад
6 лет назад
9 лет назад
9 лет назад