Помогите с алгоритмом, с програмой!

Суть такая, есть 13 офицеров заступающих в наряд, нужно случайным образом назначить им не больше 3 и не меньше 2 нарядов в месяц, наряды не могут ийти подряд друг за другом, любой из офицеров может уйти в отпуск и не учавствовать в нарядах, также по условию нельяз ставить в наряд в один и тот же день недели ( тоесть в месяце нельяз ставить в наряд человека только в воскресенья или в субботы) , также при составление графика на новый месяц нужно учитывать кто ходил в прошлом месяце в какие дни и не ставить в эти же дни!!!

Чем помочь? Что ты уже сделал? Что не получается?
Если нужна готовая программа пиши на почту, договоримся

А в чем у вас проблема? Берете и начинаете раскидывать их по сетке расписания. На каждой итерации проверяете - можно ли взять конкретно этого.