Согласен. Можно добавить ещё один цикл, который будет убирать по одному левому символу, пока строка не закончится. После except: if c and c[-1] in '+*': c2 = c[:-1] else: c2 = c while c2: c2 = c2[1:] try: if eval(c2) == 0: if len(c2) > m: m = len(c2) mc = c2 except: ... Таким образом мы на каждом этапе будем проверять все варианты при условии, если бы мы убирали первые символы. Но это, опять же, костыли. Программа будет минут 5 работать. Тогда нужно пробовать сплитовать по запретным сочетаниям и там уже выбирать подходящие кусочки.
1:16:18 На строке s = '430*281+0+845*0+' ваша программа выдаёт 0. А правильный ответ 13.
Согласен. Можно добавить ещё один цикл, который будет убирать по одному левому символу, пока строка не закончится. После except:
if c and c[-1] in '+*':
c2 = c[:-1]
else:
c2 = c
while c2:
c2 = c2[1:]
try:
if eval(c2) == 0:
if len(c2) > m:
m = len(c2)
mc = c2
except: ...
Таким образом мы на каждом этапе будем проверять все варианты при условии, если бы мы убирали первые символы.
Но это, опять же, костыли. Программа будет минут 5 работать.
Тогда нужно пробовать сплитовать по запретным сочетаниям и там уже выбирать подходящие кусочки.