Вниз  Разбор интересных задач
- 10.01.2011 / 18:03
kiriman
  Пользователь

kiriman 
Сейчас: Offline
Naik, ЧИТАЙ
Разбиение на пары.

Задано 2n целых чисел. Требуется разбить их на пары, так, чтобы сумма произведений чисел в парах была как можно больше.
Например, если заданы числа 1,2,3,4 то оптимальный вариант разбиения их на пары - (1,2) и (3,4). в Этом случае искомая сумма рвана 14.
Требуется написать программу, которая по заданному числу n и набору из 2n заданных случайным образом выдаст их оптимальное разбиение на пары. :)
- 10.01.2011 / 19:36
aleksey
  Пользователь

aleksey 
Сейчас: Offline
Мой вариант решения задачи2 на Паскале
  1. program q;
  2. var n,i,k,d:Integer;
  3. a:array[0..200] of integer;
  4. begin
  5. readln(n);
  6. Randomize;
  7. for i:=1 to 2*n do begin
  8. a[i]:=random(200)-100;
  9. write(a[i],' ');
  10. end;
  11. for i:=1 to 2*n do
  12.   for k:=i to 2*n do
  13.   if a[k]<a[i] then begin
  14.   d:=a[i];
  15.   a[i]:=a[k];
  16.   a[k]:=d;
  17.   end;
  18. writeln();
  19. for i:=1 to 2*n do begin
  20. write('(',a[i],',',a[i+1],')');
  21. i:=i+1;
  22. end;
  23. writeln();
  24. writeln();
  25. end.

- 18.01.2011 / 22:26
XakepPRO
  Пользователь

XakepPRO 
Что-то меня в этой теме долго не было. Новая, достаточно легкая задачка. Здесь можно схалявить: если будет правильным ответ, то дам 70 монет, если выложите решение, то ещё 50.

Нужно вычислить значение дроби (Q):
- 19.01.2011 / 05:23
SaRmAt95
  Пользователь

SaRmAt95 
q=1/-1?
- 19.01.2011 / 05:33
SaRmAt95
  Пользователь

SaRmAt95 
если моя теория правильная то вот решение: 99-100
- 19.01.2011 / 08:51
XakepPRO
  Пользователь

XakepPRO 
SaRmAt95 (19.01.2011/05:23)
q=1/-1?
Это ты как бы упростил? Если да, то неправильно.
99-100, это такой ответ? Тоже неправильно.

Эту задачу легче решить программным путём.
- 19.01.2011 / 09:25
aleksey
  Пользователь

aleksey 
Сейчас: Offline
XakepPRO, конечно легче програмным, прийду домой напишу
- 19.01.2011 / 15:33
aleksey
  Пользователь

aleksey 
Сейчас: Offline
Как и обещал.
Pascal:
  1. program drob;
  2. var i:integer;
  3. q:real;
  4. begin
  5. q:=100;
  6. for i:=99 downto 1 do begin
  7. q:=i+(1/q);
  8. end;
  9. q:=1/q;
  10. writeln(q);
  11. end.
Результат: 0,697774657964008
- 19.01.2011 / 16:12
XakepPRO
  Пользователь

XakepPRO 
Правильно :-D, но задача всё-таки лёгкая, не так ли?
Обещанные 70+50 монет выплатил.
- 19.01.2011 / 16:27
aleksey
  Пользователь

aleksey 
Сейчас: Offline
XakepPRO (19.01.2011/16:12)
но задача всё-таки лёгкая, не так ли?
конечно, ни на секунду не задумывался над алгоритмом сразу написал и всё :)
Наверх  Всего сообщений: 751
Фильтровать сообщения
Поиск по теме
Файлы топика (34)