Нужно написать программу с использованием рекурсии

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
Wlad33
Сообщения: 2
Зарегистрирован: 09 янв 2014, 00:11

09 янв 2014, 00:16

Вот текст задания:
Босс компании организует вечеринку, на которую можно пригласить N сотрудников. В компании имеется строгая иерархия – каждый сотрудник подчиняется кому-либо (за исключением босса), кроме того , каждый сотрудник может иметь не более 1 непосредственного начальника (т.е. соблюдается принцип единоначалия). У каждого сотрудника имеется ранг R i – его ценность для компании. При этом каждый сотрудник ненавидит своего непосредственного начальника, поэтому нельзя пригласить на вечеринку одновременно сотрудника и его непосредственного начальника, нужно пригласить кого-то одного из них. Даны два массива R и P размера N – Ri отражает ранг i того сотрудника, P(i) – номер его начальника (для босса P(i) =0). Программа должна найти сочетание сотрудников с максимальным суммарным рангом, которых одновременно можно пригласить на вечеринку.
я не понимаю, как сделать рекурсию, помогите пожалуйста
язык программирования паскаль
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

09 янв 2014, 11:18

Будем считать уровнем сотрудника количество стоящих над ним начальников. Уровень босса - 0, уровень его непосредственных подчиненных - 1, уровень подчиненных этих подчиненных - 2, и т.д.
По условиям задачи весь первый уровень отбрасывается сразу (босс же не может не пойти на свою вечеринку сам), а дальше для всех сотрудников 2 уровня надо вычислить два суммарных ранга: ранг самого сотрудника и суммарный ранг каждого его подподчиненного (4 уровня), либо суммарный ранг каждого из его подчиненных (3 уровень). При этом суммарный ранг человека, не имеющего подчиненных, равен его собственному рангу.
Правда, что делать с ограничением по N - непонятно. Возможно, после отбора нужных людей отсортировать их по убыванию ранга и взять первые N человек, но тут уже не могу гарантировать оптимальность.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Wlad33
Сообщения: 2
Зарегистрирован: 09 янв 2014, 00:11

09 янв 2014, 11:20

спасибо и на этом, стало понятнее
Ответить