Вопрос № 33877: Добрый день! У меня такой вопрос: " Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за столом могут разместиться всего 4 человека. Сколькими способами можно разместить четырех из 6
гостей за обеденным столом? Каждый из ...Вопрос № 33917: Здравствуйте Уважаемые Эксперты! Как создать в C++ Builder 6 компонент XPManifest как в Delphi 7.
..
Вопрос № 33.877
Добрый день! У меня такой вопрос: " Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за столом могут разместиться всего 4 человека. Сколькими способами можно разместить четырех из 6
гостей за обеденным столом? Каждый из 6 может разместиться на первом стуле. Каждый из оставшихся пяти гостей может занять второй стул. На третьем стуле может разместиться один из четырех гостей, и на
четвертом - один из трех оставшихся гостей. Двоим из гостей не достанется ни одного места. Таким образом, число возможных рассадок гостей за столом равно 6*5*4*3=360. Написать программу, которая будет производить аналогичные вычисления для любого числа гостей и любого числа мест за столом (при этом предполагается, что число гостей не меньше числа мест). Программа не должна быть сложной, и вычисление можно организовать с помощью простого цикла for." Зарание благодарен за ответ.
Нужна генерация всех перестановок, проще всего ее заделать рекурсией. Также ести эвристические методы... Все это дело завется "Струтуры и алгоритмы обработки данных"
Формулы можно поискать в математиках (вычислителься, дискретная, не помню в какой точно)
--------- Успех неизбежен
Ответ отправил: Zitz (статус: 5-ый класс)
Отправлен: 23.01.2006, 13:15
int getCountVariants(int iGuests, int iChairs)
{
int result = iGuests;
for (int i = 1; i < iChairs; ++i)
result *= iGuests - i;
return result;
}
все равно, что булочку сьесть :)
если шо -- обращайся еще.
--------- Україна понад усе!
Ответ отправил: yatagan (статус: 3-ий класс)
Отправлен: 23.01.2006, 14:09 Оценка за ответ: 5
Отвечает: koshi
Здравствуйте, Arsen Sahakyan Shotaevich!
Вообще всем этим делом занимается такая штука как комбинаторика! Очень кстати инересная вещь, еще и в тер. вере очень нужная. Вообщем насколько я помню на вскидку конкретно твоя проблема представляетс собой сочетания без повторения... Сочетиния из n эл-ов по m - где (в твоем случае) n - число людей, m - число стульев... А общая формула, вычисляющая количество таких сочетани n!/(n-m)! где
n! = n*(n-1)*...*1
--------- Don't worry by groovy
Ответ отправил: koshi (статус: 3-ий класс)
Отправлен: 23.01.2006, 15:01 Оценка за ответ: 5
Вопрос № 33.917
Здравствуйте Уважаемые Эксперты! Как создать в C++ Builder 6 компонент XPManifest как в Delphi 7.
Отвечает: Ерёмин Андрей
Здравствуйте, Шишкин М.А.!
См. мой ответ на вопрос 33916. Здесь аналогично - просто подключить ресурсный файл к программе.
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 23.01.2006, 20:50
Отвечает: Лучников Юрий Владимирович
Здравствуйте, Шишкин М.А.!
Воспользуйтесь компонентой: http://www.soft-gems.net/ThemeManager.php.
В отличие от стандартной линковки манифеста, она патчит VCL. В результате Windows-темы накладываются на все компоненты.
Эта компонена уже включена в дистрибутив Delphi 7 и выше.