Форум » Динамическое программирование » Не сходится ответ в 23 задаче (№466) » Ответить

Не сходится ответ в 23 задаче (№466)

q1zin: Вот моё решение, у меня ответ 49, в ответах 55. Помогите, пожалуйста)) [pre2] g = set() L = set() f = set() for num in range(10,1023): s = bin(num)[2:] if (s.count('1')>5 or (s[-2]!='0')): continue while len(s) != 11: g.add(s) s = '0'+s for i in g: k=4 for j in i: if j == '0': k+=1 elif j == '1': k+=2 if k == 14: L.add(i) print(len(L)) for i in L: s = '' for j in i: if j =='0': s += '1' else: s+= '2' f.add(s) print(f) [/pre2]

Ответов - 2

q1zin: Она была в том, что я не проверял маленькие значение (брал range от 10, а не от 0) [pre2] g = set() L = set() f = set() for num in range(1024): s = bin(num)[2:] if (len(s) > 1) and (s.count('1')>5 or (s[-2]!='0')): continue while len(s) != 11: g.add(s) s = '0'+s for i in g: k=4 for j in i: if j == '0': k+=1 elif j == '1': k+=2 if k == 14: L.add(i) print(len(L)) for i in L: s = '' for j in i: if j =='0': s += '1' else: s+= '2' f.add(s) print(f) [/pre2]

Ж: Вот очень короткий код для таких задач. К - это последовательность команд в виде строки f=lambda n,k: f(n+1,k+'1')+f(n+2,k+'2') if n<14 else n==14 and k[-2]=='1' print(f(4,''))



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