• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Вычислить максимум необычной суммы?

  • Автор темы Автор темы iks2
  • Дата начала Дата начала

iks2

Новые
Регистрация
22 Окт 2016
Сообщения
62
Реакции
0
Баллы
0
Вычислить максимум необычной суммы?

Задача
дано 100 чисел: sin1, sin2, ... , sin100
Эти числа разбиваются на пары и перемножаются. Получается 50 чисел, которые и складываются.
Требуется всё это проделать так, чтобы получить максимальную сумму.

решение
1. числа загоняются в массив
2. массив сортируется
3. рядом стоящие элементы перемножаются и все суммируется

Вопрос. Будет ли это Истинный максимум?

Код:
REM
REM  SUMMA = 25.11266
REM

CLS
CONST n = 100
DIM x(1 TO n)

FOR i = 1 TO n
   x(i) = SIN(i)
NEXT

FOR i = 1 TO n - 1
FOR j = i + 1 TO n
   IF x(i) > x(j) THEN SWAP x(i), x(j)
NEXT j, i

FOR i = 1 TO n - 1 STEP 2
   S = S + x(i) * x(i + 1)
NEXT

PRINT "SUMMA ="; S
END
 
Странно что в квадрат при этом не возводятся, а то была бы единица. :)
Вопрос. Будет ли это Истинный максимум?
Конечно же нет. А как быть с отрицательными числами?

P.s. Метод сортировки примитивен. Что-нибудь слышали про пузырьковый метод? ;)
 
Последнее редактирование:
Николай_С
Понимаете, после сортировки, мы имеем последовательность от самого меньшего числа, до самого большего. Далее все числа, пары, перемножаются. Иными словами умножение двух отрицательных чисел дает положительное число. В случае если число отрицательных чисел нечетно, то
это будет самое маленькое по модулю отрицательное число и умножится оно на самое маленькое по модулю положительное число. То есть мы получим (в данном случае) самое малое по модулю отрицательное число. Понимаете, меньше Не существует. Ну а что с остальными числами?
Приведу вам пример для двух пар чисел. Дано A, B, C, D - четыре числа в порядке возрастания. И надо доказать, что AB + CD - Абсолютный максимум. Итак у нас 2 варианта. Докажем оба
1. (AB + CD) > (AC + BD)
2. (AB + CD) > (AD + BC)
...
1. (AB + CD) - (AC + BD) > 0 ?
A(B - C) + D(C - B) = (A - D)(B - C) > 0 (доказано)

2. (AB + CD) - (AD + BC) > 0 ?
A(B - D) + C(D - B) = (A - C)(B - D) > 0 (доказано)

Надо полагать, что далее может помочь математическая индукция (это я не проверял)
Как вы считаете, этого недостаточно?
 
Назад
Сверху