![]() |
|
![]() ![]() ![]() |
|
jezismaria |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 30.3.2011 Репутация: нет Всего: нет |
Задача такова - есть группа алмазодобытчиков, три человека. Они могут найти несколько алмазов (до 20 допустим), каждый стоит определенную цену. Вопрос таков - как им точно разделить эти алмазы по цене? пример: нашли 5 алмазов, стоят: 1,1,1,1,2, ответ: разделить можно, а такой пример: нашли 6 алмазов, стоят: 12 13 14 100 100 100 ответ: разделить нельзя.
8 алмазов 25 13 5 5 5 6 12 4 разделить можно. С чего бы вы начали? Может есть такой алгоритм и он как-то называется замудрено? ![]() Сорри, опечатался, перепутал цены. Это сообщение отредактировал(а) jezismaria - 1.5.2011, 15:19 |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Что-то ничего кроме метода Монте-Карло в голову не лезет.
................................. Если же практически, то алмазы прекрасно делятся на того из старателей, кто лучше стреляет ![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Тут цифр больше 6-и, как же они их разделят? Получается, что нельзя разделить, когда цифр больше чем алмазов. Вот и весь алгоритм. |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
nworm, идея непонятна. Цифр-то всегда 10. Вряд-ли старатели знакомы с шестнадцатеричной системой счисления.
![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Почему, отличная идея, по-моему, в первом случае 5 цифр, во втором целых 11.
_Y_, а как 10 то получилось? Метода Монте-Карло задействован? |
|||
|
||||
esperanto |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
Методом полного перепора, эта задача класса НП.
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
_Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Въехал! Это ты количество алмазов "количеством цифр" называешь. Странно, ну да ладно. Скажем 11 алмазов (даже и простое число) надо разделить на 3 старателей (да еще и по-честному). По-твоему получается, что это невозможно. Но алмазы-то стОят, например: 5 4 4 4 2 2 2 2 2 2 1 Делим алмазы между персонажами: 5+4+1=10 4+4+2=10 2+2+2+2+2+2=10 Все по-честному получилось. ![]() Добавлено через 12 минут и 26 секунд jezismaria, я вот подумал. До того как мучить метод Монте-Карло, можно осуществить простую проверку: 1. Делим стОимость каждого алмаза на наибольший общий делитель. Ну например, если есть набор алмазов стоимостью 45 60 300, то делим на 15 и получаем коэффициенты 3 4 20 2. Суммируем коэффициенты стоимости всех алмазов 3+4+20=26 3. Делим на число старателей 26/3=8,666666 Получилось число дробное - значит поделить честно нельзя. Если бы получилось число целое, можно было бы переходить к поиску комбинаций укладки алмазов в три кучки. Критерий: сумма коэффициентов стоимости алмазов в каждой кучке должна быть равна числу, полученному в результате предидущего рассчета. Если алмазов не очень много - можно перебрать все варианты. А если очень - тогда как-то еще. Это сообщение отредактировал(а) _Y_ - 1.5.2011, 20:29 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
||||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Bitter, я подумал сначала про генетические алгоритмы, но не смог вообразить как положить такую задачу на хромосому. Опиши, пожалуйста. Интересно
![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
esperanto |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
Задача принадлежит классу НП, ее решение экспоненциальные перебор. В чем смысл генетических алгоритмов тут? --------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |