Задача по комбинаторике - C#
Формулировка задачи:
Для участия в сложном соревновании спортивно-технического многоборства физически готовы, но но с разными показателями готовности 10 спортсменов (нумерованные с 1 по 10). В составе команды нужно заявить 6 спортсменов. Но спортсмены 3 и 7 конкурируют между собой так, что коэфициэнт отдачи у 3 равен 0.7, а у 7 равен 0.5, спортсмены 4 и 5 хорошо взаимодействуют, но при наличии спортсмена 6 их отдача равна по 0.7, потому что тот берёт игру на себя, хотя сам в таких условиях способен всего на 0.8 от своих способностей. У 6 всё хорошо с 1 и 2. Спортсмен 8 хорошо сотрудничает только с 10. По отдельности их отдача равна по 0.6. Спортсмен 9 хорошо работает только с 7 при отсутствии 8.
Если не выполняется условие полной отдачи, то, когда не указано другое, отдача равна 0.5 от уровня физической готовности.
Уровень физической готовности в таблице во вложении.
Итог всего ЭтОгО: помочь тренеру сформировать команду с максимальной отдачей.
З.Ы. Для русскоязычных форумчан перевод одного из столбцов таблицы "рівень фізичної готовності" = "уровень физической готовности/подготовки"
Проблема состоит в том что я даже не знаю как эту задачу решить на бумаге, а не то что воплотить в код)
Я и еще один человечек будем очень благодарны, если Вы, уважаемые форунчане, не оставите нас без поддержки)
Решение задачи: «Задача по комбинаторике»
textual
Листинг программы
Parallel.ForEach(all.NextPermutation(6).ToArray(), (x) => { var item = x.ToArray(); var current = GetResult(item, GetLevelTable(item)); if (current > maxResult) { party = item; maxResult = current; } count++; if (count % 400 == 0) { Console.Clear(); Console.WriteLine("Обработано команд: {0}", count); }; });
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д