Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2018, 21:53   #1
Vovik123
Новичок
Джуниор
 
Регистрация: 14.11.2018
Сообщений: 1
По умолчанию Расставить знаки

Задача
Даны N целых чисел X1, X2, ..., XN. Расставить между ними знаки "+" и "-" так, чтобы значение получившегося выражения было равно заданному целому S.

Входные данные
В первой строке находятся числа N и S. В следующей строке - N чисел через пробел. 2 <= N <= 24, 0 <= Xi <= 50 000 000, -1 000 000 000 <= S <= 1 000 000 000

Я решаю на python. Решаю рекурсией, а именно - перебором всех вариантов, пока не встречу своё искомое выражение. Но такое решение прошло только 6 тестов из 9. На остальных TL в 0.002с. Скажите, можно ли улучшить мой алгоритм? Или тут нужен другой подход? Была ещё идея решить бинпоиском , но это уж как-то муторно по-моему.
Код:
def rec(ch,s,st):
  global k
  global l
  if k!='':
    return 0
  if ch==len(l):
    if s==b:
      k=st
    return 0
  rec(ch+1,s+l[ch],st+'+'+str(l[ch]))
  rec(ch+1,s-l[ch],st+'-'+str(l[ch]))   
a,b=map(int,input().split())
k=''
l=[int(j) for j in input().split()]
rec(1,l[0],str(l[0]))
if k=='':
  print('No solution')
else:
  print(k+'='+str(b))

Последний раз редактировалось BDA; 16.11.2018 в 00:35.
Vovik123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расставить между цифрами знаки арифметических операций yura4044 Помощь студентам 3 09.03.2018 00:59
Расставить между ними знаки + и - так, чтобы значение получившегося выражения было равно заданному целому S apethegod Помощь студентам 1 23.12.2017 13:20
Заданы цифры - расставить знаки сложения и вычитания так, чтобы получилось выражение. Учесть склеивания цифр. MDefs Общие вопросы C/C++ 1 01.10.2016 21:02
Задача на C# - заданы цифры - расставить знаки сложения и вычитания так, чтобы получилось выражение с заданным результатом eduard93 Помощь студентам 1 08.12.2011 00:03
Расставить комментарии bookkc Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 16.09.2010 10:00