Задачка про пиратов
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- Gaziz
- Житель
- Сообщения: 944
- Зарегистрирован: 17 фев 2003, 15:57
- Откуда: Almaty-Toronto-Vancouver-Seattle
Задачка про пиратов
Сорри если боян, но мне понравилось - итак - Есть 2 пирата с негомогеничным награбленным, которое надо разделить так, что бы они оба были
согласны с размерами своих частей. Придумайте алгоритм.
согласны с размерами своих частей. Придумайте алгоритм.
- Дочь л-та Шмидта
- Маньяк
- Сообщения: 3463
- Зарегистрирован: 10 июн 2008, 10:04
Re: Задачка про пиратов
Ну, это совсем простенькая задачка, в одно действие. Та же задачка усложняется, если есть 10 очень жадных пиратов, и в случае, если кто-то не согласен с дележом, делящего скармливают акулам. Но тогда делить должен следующий.
- Waterbyte
- Графоман
- Сообщения: 48035
- Зарегистрирован: 10 авг 2007, 13:43
Re: Задачка про пиратов
Ну и? Чего тянете-то? Каков алгоритм-то? "негомогеничным"... Газиз, с "нефотогеничным" не перепутал? Напомнило моего шефа с его "гетерофазными" системами...
- Gaziz
- Житель
- Сообщения: 944
- Зарегистрирован: 17 фев 2003, 15:57
- Откуда: Almaty-Toronto-Vancouver-Seattle
Re: Задачка про пиратов
Алгоритм очень элегантный - один из пиратов делит добро на 2 кучки а второй выбирает себе одну из них.
Задача немного усложняется когда появляется третий пират - попробуйте решить сами
Задача немного усложняется когда появляется третий пират - попробуйте решить сами

- Stanislav
- Mr. Minority Report
- Сообщения: 45492
- Зарегистрирован: 19 окт 2005, 16:33
- Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo
Re: Задачка про пиратов
Задача давно решена для N делящих - один отворачивается, а остальные делят на равные кучки. Потом отвернувшегося спрашивают, показывая на случайную кучку - это кому? Он отвечает - Иванову. и т.д.Gaziz писал(а):Алгоритм очень элегантный - один из пиратов делит добро на 2 кучки а второй выбирает себе одну из них.
Задача немного усложняется когда появляется третий пират - попробуйте решить сами
- Waterbyte
- Графоман
- Сообщения: 48035
- Зарегистрирован: 10 авг 2007, 13:43
Re: Задачка про пиратов
Stanislav, с таким алгоритмом скармливание отвернувшегося акулам по версии дочери л-та обеспечено. Метод индукции применять надоть, однозначно. Вот тока как?Stanislav писал(а):Задача давно решена для N делящих - один отворачивается, а остальные делят на равные кучки. Потом отвернувшегося спрашивают, показывая на случайную кучку - это кому? Он отвечает - Иванову. и т.д.Gaziz писал(а):Алгоритм очень элегантный - один из пиратов делит добро на 2 кучки а второй выбирает себе одну из них.
Задача немного усложняется когда появляется третий пират - попробуйте решить сами
- Дима
- Маньяк
- Сообщения: 1455
- Зарегистрирован: 15 авг 2006, 10:21
- Откуда: Минск->Vancouver->Victoria
Re: Задачка про пиратов
Первый отрезает 1/N-ую, по его мнению, часть, но не забирает ее, а становится в конец очереди. Второй имеет выбор: взять этот кусок или стать в конец очереди. Если никто из очереди этот кусок не берет, он достается первому. И.т.д. Для чистоты эксперимента очерердь можно перемешивать сразу после отрезания кусочка...
- Дочь л-та Шмидта
- Маньяк
- Сообщения: 3463
- Зарегистрирован: 10 июн 2008, 10:04
Re: Задачка про пиратов
Я напутала, извините. В задачке про десятерых пиратов и акул было гомогеничное содержимое. (Жемчуг, по-моему).
А про трех пиратов - разное. Они по-разному решаются.
А про трех пиратов - разное. Они по-разному решаются.
- Дима
- Маньяк
- Сообщения: 1455
- Зарегистрирован: 15 авг 2006, 10:21
- Откуда: Минск->Vancouver->Victoria
Re: Задачка про пиратов
Во, придумал
Изначально это задачка была про дележку торта, оттого у меня и куски в решении
Но вернемся к сокровищам (негомогеничным).
Шаг 1: первый пират выделяет минимально возможную кучку, которую он хотел бы получить.
Шаг 2: 3 варианта.
1. Никто из оставшихся эту кучку не хочет. Тогда она достается первому. Переходим к шагу 1 без уже осчастливленного пирата и с оставшейся кучей.
2. Эту кучку хочет еще один пират. Кучка достается этому одному. Переходим к шагу 1 без уже осчастливленного пирата и с оставшейся кучей.
3. Эту кучку хотят несколько пиратов(возможно, все). Переходим к шагу 3
Шаг 3: (в случае, когда на первую кучку более двух желающих):
1. Следующий пират может отнять от кучки немножко, чтобы остаток его все равно удовлетворял. Переходим к шагу 1 с этой кучкой и подгруппой, из которой исключен первый пират.
Если этот пират не хочет отнимать, берем следующего.
2. Никто из пиратов не хочет уменьшать кучку. Тогда она достается первому, который кучку и отмерил. Переходим к шагу 1 с оставшейся кучей.
Так как на любом этапе подгруппа пиратов уменьшается, то алгоритм конечен. Ну и "никто не уйдет обиженным"


Шаг 1: первый пират выделяет минимально возможную кучку, которую он хотел бы получить.
Шаг 2: 3 варианта.
1. Никто из оставшихся эту кучку не хочет. Тогда она достается первому. Переходим к шагу 1 без уже осчастливленного пирата и с оставшейся кучей.
2. Эту кучку хочет еще один пират. Кучка достается этому одному. Переходим к шагу 1 без уже осчастливленного пирата и с оставшейся кучей.
3. Эту кучку хотят несколько пиратов(возможно, все). Переходим к шагу 3
Шаг 3: (в случае, когда на первую кучку более двух желающих):
1. Следующий пират может отнять от кучки немножко, чтобы остаток его все равно удовлетворял. Переходим к шагу 1 с этой кучкой и подгруппой, из которой исключен первый пират.
Если этот пират не хочет отнимать, берем следующего.
2. Никто из пиратов не хочет уменьшать кучку. Тогда она достается первому, который кучку и отмерил. Переходим к шагу 1 с оставшейся кучей.
Так как на любом этапе подгруппа пиратов уменьшается, то алгоритм конечен. Ну и "никто не уйдет обиженным"

-
- Житель
- Сообщения: 662
- Зарегистрирован: 10 апр 2006, 13:16
- Откуда: Coquitlam
Re: Задачка про пиратов
с негомогеничным (
) сокровищами проблема. Они могут не делится на N (при N > 1)

- Дима
- Маньяк
- Сообщения: 1455
- Зарегистрирован: 15 авг 2006, 10:21
- Откуда: Минск->Vancouver->Victoria
Re: Задачка про пиратов
В условиях задачи нету слова "поровну". Каждый просто должен быть доволен своей долейspavel писал(а):с негомогеничным () сокровищами проблема. Они могут не делится на N (при N > 1)

-
- Житель
- Сообщения: 662
- Зарегистрирован: 10 апр 2006, 13:16
- Откуда: Coquitlam
Re: Задачка про пиратов
ну возьми 4 монеты и 6 человек как пример.
- Waterbyte
- Графоман
- Сообщения: 48035
- Зарегистрирован: 10 авг 2007, 13:43
Re: Задачка про пиратов
Чё-то не вполне ясно. Вопросы имею.
А что, если не более, а ровно два?Дима писал(а):Шаг 3: (в случае, когда на первую кучку более двух желающих):
И что в таком случае достаётся первому пирату? На каком из следующих этапов он может присоединиться назад к группе, если "его" кучка без чего-то уже ушла кому-то ещё?Дима писал(а):1. Следующий пират может отнять от кучки немножко, чтобы остаток его все равно удовлетворял. Переходим к шагу 1 с этой кучкой и подгруппой, из которой исключен первый пират.
- Дима
- Маньяк
- Сообщения: 1455
- Зарегистрирован: 15 авг 2006, 10:21
- Откуда: Минск->Vancouver->Victoria
Re: Задачка про пиратов
Нет разницы, 2 или более. Первый пират отложил кучку, которая понравилась еще ровно двоим. Далее эти двое переходят к шагу 3 - уменьшению этой кучки. Кучка в конечном итоге достается тому, кто ее последним уменьшил.Waterbyte писал(а):А что, если не более, а ровно два?
Правило простое: если кучка, созданная первым пиратом, была уменьшена, то он не принимает участие в ее дележке(напомню, что первый пират изначально должен создать МИНИМАЛЬНО возможную кучку, на которую он согласен). Соответственно, он возвращается в общую группу и примет участие в распределении следующей кучки.Waterbyte писал(а):И что в таком случае достаётся первому пирату? На каком из следующих этапов он может присоединиться назад к группе, если "его" кучка без чего-то уже ушла кому-то ещё?
- Дима
- Маньяк
- Сообщения: 1455
- Зарегистрирован: 15 авг 2006, 10:21
- Откуда: Минск->Vancouver->Victoria
Re: Задачка про пиратов
Хех, упростим идею 
Все пираты выстраиваются в очередь. Первый насыпает устраивающую его кучку и становится в конец очереди. Каждый следующий из очереди имеет 2 опции: либо выйти из очереди (и не принимать участия в дележе этой кучки), либо уменьшить кучку и стать в конец очереди. Процесс заканчивается, когда в очереди остается 1 пират. Кучка ему и достается. Как нетрудно заметить, этот пират и был последним, кто уменьшил кучку.

Все пираты выстраиваются в очередь. Первый насыпает устраивающую его кучку и становится в конец очереди. Каждый следующий из очереди имеет 2 опции: либо выйти из очереди (и не принимать участия в дележе этой кучки), либо уменьшить кучку и стать в конец очереди. Процесс заканчивается, когда в очереди остается 1 пират. Кучка ему и достается. Как нетрудно заметить, этот пират и был последним, кто уменьшил кучку.