Форум » Динамическое программирование » 7098 Не сходится ответ » Ответить

7098 Не сходится ответ

Ельцова: Здравствуйте, разными способами учитывали условие и получили другой ответ -93445. Код ниже [pre2] def f(x,y,s): u=('23' not in s and '20' in s) or ('23' in s and '20'not in s)or ('23' not in s and '20' not in s) if x==y and u: return 1 if x<y: return 0 return f(x-3,y,s+str(x))+f(x-1,y,s+str(x))+f(x-4,y,s+str(x)) print(f(43,17,'')) [/pre2]

Ответов - 1

Ж: [pre2] f=lambda n,tr: f(n-1, tr+[n])+ f(n-3, tr+[n])+f(n-4, tr+[n]) if n>17 else n==17 and ( (23 in tr) + (20 in tr) ) <=1 print(f(43,[])) [/pre2] Ваше код надо поправить так: [pre2] def f(x, y, s): u = ('23' not in s and '20' in s) or ('23' in s and '20' not in s) or ('23' not in s and '20' not in s) if x == y and u: return 1 if x < y: return 0 return f(x - 3, y, s + ' '+str(x)) + f(x - 1, y, s + ' '+str(x)) + f(x - 4, y, s + ' '+str(x)) print(f(43, 17, '')) [/pre2] У вас числа в траектории склеиваются 233441... где между ними раздел - не видно. Либо добавляйте числа в список, либо разделяйте пробелом



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