@chrisgeeq Ваша главная проблема в том, что вы задаете вопросы в разделе комментариев ответа ~ 3 месяца, в котором было 0 голосов. Никто никогда не найдет здесь ваш вопрос. Если у вас есть конкретный ответ на вопрос, пожалуйста, используйте кнопку «Задать вопрос», чтобы задать его так, чтобы другие могли его увидеть. Как я уже сказал, я понятия не имею о рубине, и я действительно не помню, о чем вообще был весь этот вопрос.
у написать алгоритм, чтобы найти последовательные бонусные очки. Приглашенный получает (1/2) ^ k баллов за каждое подтвержденное приглашение, где k - уровень приглашения: уровень 0 (приглашенные люди) дает 1 балл, уровень 1 (люди, приглашенные кем-то, приглашенным первоначальным клиентом), дает 1/2 балла, приглашения уровня 2 (люди, приглашенные кем-то на уровне 1), награждают 1/4 балла и так далее. Учитывается только первое приглашение: несколько приглашений, отправленных одному и тому же человеку, не дают никаких дополнительных баллов, даже если они получены от разных приглашенных, и учитывается только первое приглашение. Например:
Входные данные:
A recommends B
B accepts
B recommends C
C accepts
C recommends D
B recommends D
D accepts
рассчитывается следующим образом: A получает 1 очко по рекомендации B, 0,5 балла по рекомендации C от B и еще 0,25 балла по рекомендации D от C. A набирает общий балл 1,75 балла.
B получает 1 балл по рекомендации C и 0,5 балла по рекомендации D от C. B не получает баллов по рекомендации D, потому что D был приглашен C ранее. B получает общий балл 1,5 балла.
C получает 1 балл по рекомендации D. C получает общий балл 1 балл.
Выход:{ “A”: 1.75, “B”: 1.5, “C”: 1 }
Какой должен быть алгоритм для этого? Я думаю, что здесь нужно использовать динамическое программирование.