Форум » Динамическое программирование » №6038 не могу разобраться с условием, превышена рекурсия, по коду думаю верно продумал. » Ответить

№6038 не могу разобраться с условием, превышена рекурсия, по коду думаю верно продумал.

Алексей21: from sys import * setrecursionlimit(100000) def f(n,e,p1,p2): if n>e: return 0 if n==e: return 1 if n<e and p1==p2=='+1': return f(n*2,e,'*2',p1)+f(n+3,e,'+3',p1) if n<e and p1==p2=='*2': return f(n+1,e,'+1',p1)+f(n+3,e,'+3',p1) if n<e and p1==p2=='+3': return f(n*2,e,'*2',p1)+f(n+1,e,'+1',p1) if n<e: return f(n+1,e,'+1','p1')+f(n*2,e,'*2','p1') + f(n+3,e,'+3',p1) print(f(5001,45789,'',''))

Ответов - 1

Ж: [pre2] f= lru_cache(2**10)(lambda n,s: f(n+1,1)*(s!=1)+f(n*2,2)*(s!=2)+f(n+3,3)*(s!=3) if n<45789 else 1*(n==45789)) for c in range(45789,5000,-1): f(c, 0) print(f(5001, 0)) [/pre2]



полная версия страницы