ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1036. Счастливые билеты

Python 3.4 solution
Послано Evgeny Shulgin 6 май 2015 18:10
n, m = input().split()
n = int(n)
m = int(m)

if m % 2 == 1:
    print(0)
    exit()

m /= 2

d = {}
def dfs(v,sum):
    if sum < 0:
        return 0

    if (v,sum) in d:
        return d[(v,sum)]

    if v == 0 and sum == 0:
        d[(v,sum)] = 1
        return 1

    if v == 0 and sum != 0:
        d[(v,sum)] = 0
        return 0

    ans = 0

    for i in range(10):
        ans += dfs(v - 1, sum - i)

    d[(v,sum)] = ans

    return ans


print(dfs(n,m)**2)
Re: Python 3.4 solution
Послано Ivan 9 янв 2022 22:24
Dude, your solution confused me so much with your function named DFS. I thought it really does some dfs stuff, but actually it's recursion + memoization lol