Стабильные встречи в C#

В этом примере предполагается, что у вас есть люди, которые должны зарегистрироваться для ограниченного числа встреч. Каждому человеку разрешается выбирать первый, второй и третий варианты. Программа назначает людей на встречи «стабильным» способом, когда «стабильный» означает, что два человека не захотят торговать встречами.

Класс Person представляет человека и его предпочтения.

Следующий код выполняет задания.

Код считывает информацию о предпочтениях из текстового поля и использует его для создания объектов Person.

Далее код выполняет начальные задания. Для каждого уровня предпочтений (в этом примере люди занимают три встречи 0, 1 или 2), код проверяет объекты Person. Если a Person еще не назначен и что Person предпочтение объекта для этого уровня не было назначено, программа выполняет это назначение.

Например, предположим, что программа смотрит на предпочтение 1 (второй выбор). Салли еще не назначена на прием, а ее выбор № 1 - слот для встреч 6. Если этот слот еще не был сделан другим Person, программа назначает его Салли.

После того, как он выполнил эти преференциальные назначения, программа назначает любое непризнанное Person любую доступную встречу.

Далее программа входит в цикл, ищущий улучшения. Для каждой пары объектов Person программа определяет, должны ли эти лица торговать встречами. Например, предположим, что Биллу было назначено его первое назначение на прием № 3, а Синди была назначена должность № 7, которую она не указала в качестве одного из своих выборов. Предположим, что Билл назвал назначение 7 своим третьим выбором, а Синди назвал назначение 3 своим вторым выбором. В этом случае программа свопит встречи Билла и Синди. Он предпочитает третий / второй выбор по первому / никому варианту.

Обратите внимание, что этот пример не гарантирует какой-либо оптимальности. Могут быть более сложные сделки с участием более двух человек, которые приведут к лучшему окончательному решению. Я могу работать над другой программой, чтобы посмотреть на это более внимательно.

Источник: http://csharphelper.com/blog/2016/12/make-stable-appointments-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *