90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
1 | |
Охотники против уток12.01.2017, 09:26. Показов 999. Ответов 5
Метки нет (Все метки)
Летят N уток, их поджидает M охотников. Имеем матрицу MxN, где элемент k[i][j] означает может ли i-ый охотник сбить j-ую утку (0 - не может, 1 - может). Каждый охотник может сбить только одну утку. Охотники заинтересованы в том, чтоб сбить максимальное количество уток. Нужно найти такой массив из N элементов, каждым элементом которого будет номер охотника, который собъет эту утку, при чем количество сбитых уток должно быть максимальным из возможных. Также следует учесть вариант, что охотник может не сбивать утку вообще (отказаться) (то есть охотник может / не может сбить утку, а может отказаться от стрельбы вообще во благо общего дела).
Сижу над этой задачей второй день, но пока не осилил даже простым перебором
0
|
12.01.2017, 09:26 | |
Ответы с готовыми решениями:
5
Охотники делятся на группы по 3 человека Duck Hunt отрисовка уток Охота на уток игра WinAPI Расчитать число овечек и уток |
Ferrari F1
|
12.01.2017, 09:39
#2
|
Не по теме: JIawliet, это из тетради смерти ник? :)
0
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
12.01.2017, 09:49 [ТС] | 3 |
Не по теме: Ferrari F1, ага) Добавлено через 8 минут Почему охотник может отказаться от стрельбы вообще? ответ вот в чем, я решил умолчать об одном условии задачи, чтоб ее не усложнять, но видимо зря. Если охотник может сбить утку, то для этого случая указано время за которое он ее собьет. Нужно сбить максимальное количество уток за минимальное количество времени.
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
12.01.2017, 15:33 | 4 |
Ну простым перебором то легко решается.
Заполнить массив векторов. Каждый вектор содержит номера уток, который может сбить очередной охотник. Далее перебирать значения вектора. Если подошли к концу - увеличивать значение индекса предыдущего элемента (вектора), а текущее сбрасывать на ноль. Как только значение первого элемента массива подошло в концу вектора, считать что прошлись по всем комбинациям и последовательности нет. Во время перебора можно добавлять текущую комбинацию уток, которых можно убить, в какой-нибудь unordered_set, а после итерации проверять размер контейнера. Если он равен количеству уток - бинго!
1
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
12.01.2017, 15:47 [ТС] | 5 |
немного по другому решил сделать... завел вектор с размером N (количество уток) и перебираю все возможные комбинации, если комбинация существует - проверяю количество сбитых уток и время, если такая комбинация лучше, чем лучшая на текущий момент (отдельный вектор), то сохраняем ее в этом векторе...
Да, задача решаема, просто много всяких нюансов надо учесть
0
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
||||||
15.01.2017, 19:32 [ТС] | 6 | |||||
Возможно когда-нибудь кому-нибудь понадобится:
0
|
15.01.2017, 19:32 | |
15.01.2017, 19:32 | |
Помогаю со студенческими работами здесь
6
Игра "охота на уток" F-22 против Су-37 БС против ПФ? SEF: за и против Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |