Войти на сайт

Авторизация, ждите ...
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

ТЕМА: Алгоритм, решающий математическую задачку

Алгоритм, решающий математическую задачку 12 года 6 мес. назад #49193

  • James
  • James аватар
  • Вне сайта
  • Архитектор Миров
  • Ленивый мечтатель
  • Сообщений: 1167
  • Спасибо получено: 159
  • 3 местоПисательРазработчикПобедитель конкурсаОрганизатор конкурсовПисатель 2 место2 место
Уважаемые коллеги, (в частности те, кто хорошо понимает математику). При работе над проектом я обнаружил одну сложность, которая остановила прогресс вот уже на две недели. В чём суть:

На вход подаются числа X (Значения от нуля до сотни, не включая), A' ([0..9] включая), B' [0..4] и C' [0..2]
Есть три переменных, принимающих целые значения в следующих пределах
0 <= A <= A'
0 <= B <= B'
0 <= C <= C'
Нужно подобрать такие минимальные значения A, B и C, чтобы выражение
X + 10 * A + 25 * B + 50 * C - 100
принимало наименьшее неотрицательное значение.

Прошу помощи:
Как такое решать?
Как можно научить компьютер решать такое, используя средства эвентов?

Заранее благодарен
Администратор запретил публиковать записи гостям.

Алгоритм, решающий математическую задачку 12 года 6 мес. назад #49211

  • James
  • James аватар
  • Вне сайта
  • Архитектор Миров
  • Ленивый мечтатель
  • Сообщений: 1167
  • Спасибо получено: 159
  • 3 местоПисательРазработчикПобедитель конкурсаОрганизатор конкурсовПисатель 2 место2 место
Спасибо, идея здравая. Но надо как-то оптимизировать алгоритм для меньших затрат времени. Паузы нафиг повыдёргивать. Избавиться от иногда возникающих багов и от Goto (нафиг Jump, если есть Break Loop?).
Я подумаю над этим.

P.S. В результате нужно получить именно A, B и С. В случае, когда возможны несколько вариантов отдаём предпочтение тем, где меньше C (и B ) либо с меньшим значением A+B+C.
P.S. Скриптом нельзя. Принципиально. Эксперимент, знаешь ли :)
Последнее редактирование: 12 года 6 мес. назад от James.
Администратор запретил публиковать записи гостям.

Алгоритм, решающий математическую задачку 12 года 6 мес. назад #49310

  • James
  • James аватар
  • Вне сайта
  • Архитектор Миров
  • Ленивый мечтатель
  • Сообщений: 1167
  • Спасибо получено: 159
  • 3 местоПисательРазработчикПобедитель конкурсаОрганизатор конкурсовПисатель 2 место2 место
У меня начались каникулы и появился хотя бы один свободный день. И за этот свободный день (где-то за час) я придумал алгоритм. Считает он меньше секунды (Намного меньше, как мне кажется. По крайней мере, я ничего не заметил). И без всяких пауз.
А тебе спасибо за то, что подсказал идею - использовать циклы с перебором.

Если интересно, как я это сделал, вот: www.mediafire.com/?dzxd7bokvs1f6lv

P.S. Break лучше Goto не по количеству памяти или времени. Он удобнее. Да и мне привычнее, как программисту (пусть пока и непрофессиональному, но достаточно перспективному). Не зря же Goto всегда подвергался критике.
Последнее редактирование: 12 года 6 мес. назад от James.
Администратор запретил публиковать записи гостям.

Алгоритм, решающий математическую задачку 12 года 6 мес. назад #49315

  • James
  • James аватар
  • Вне сайта
  • Архитектор Миров
  • Ленивый мечтатель
  • Сообщений: 1167
  • Спасибо получено: 159
  • 3 местоПисательРазработчикПобедитель конкурсаОрганизатор конкурсовПисатель 2 место2 место
Ну, если мне память не изменяет, Ассемблер и умножать не умеет :)

P.S. И всё же я не люблю местные goto. Хотя бы потому, что используется две команды - назначить метку и перейти к метке. И названия этих меток я часто забываю.
Администратор запретил публиковать записи гостям.

Алгоритм, решающий математическую задачку 12 года 6 мес. назад #49318

  • James
  • James аватар
  • Вне сайта
  • Архитектор Миров
  • Ленивый мечтатель
  • Сообщений: 1167
  • Спасибо получено: 159
  • 3 местоПисательРазработчикПобедитель конкурсаОрганизатор конкурсовПисатель 2 место2 место
Я забыл сказать, когда давал ТЗ, что в случае, когда невозможно получить ноль и больше, надо взять наиболее приближённое к нулю.

P.S. Забыл добавить X, отправил, добавил X :)
Администратор запретил публиковать записи гостям.
Время создания страницы: 0.195 секунд