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

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

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.



Программа на Паскале, которая реализует задачу разбиения на пары:
```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`. Затем программа выводит найденное оптимальное разбиение на пары.


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







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili