3

У меня есть список людей:

Колонка А:

person A,             
person A guest,       
person B,            
person C,            
person C guest,     
...

Колонка Б:

1,
1,
2,
3,
3,
...

Таким образом, в столбце A есть имя человека, столбец B дает человеку уникальный идентификатор (тот же идентификатор для его гостя, поэтому мы знаем, что они вместе).

Теперь представьте, что у нас есть список из 100 человек (также обратите внимание, что не у всех есть гости), и мы должны их посадить. У нас есть список таблиц (например, таблицы на 10 * 4 человека и таблицы на 10 * 6 человек). Мы должны рандомизировать, что каждый человек назначен на стол, и гость сидит на том же столе.

Каков наилучший способ сделать это? (также необходимо, чтобы я мог генерировать это 4 раза подряд без одинаковых результатов, поэтому, когда во время 4 блюд закусочной человек переключается между столами, но не теряет своего гостя).

1 ответ1

1

Сначала выполните подсчет и определите общее количество мест, необходимое на человека. Во-вторых, сортируйте людей по количеству, по убыванию. В-третьих, поскольку вы не предоставили список ограничений таблиц, присвойте наибольшую группу самой большой таблице, затем попробуйте заполнить оставшиеся места подходящим количеством для людей, а затем перейдите к следующей таблице.

например: Таблица для 6 будет группа из 4 плюс группа из 2 или 2 группы из 3.

Так как группы могут разговаривать между собой. Старайтесь не размещать синглы с группами больше 2.

Если вы можете предоставить список ограничений на количество мест (количество столов и количество мест на стол), эта рекомендация может быть улучшена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .