Я пытаюсь запрограммировать мой TI-83, чтобы выполнить поиск суммы подмножества. Итак, учитывая список длины N, я хочу найти все списки заданной длины L, которые суммируются с заданным значением V.Подмножество Sum TI Basic Programming
Это немного отличается от обычной суммы суммы подмножества, потому что я ищу только подмножества заданных длин, не все длины и рекурсия не обязательно являются первым выбором, потому что я не могу назвать программу, в которой я работаю.
Я могу легко выполнить задачу с вложенными циклами, но это становясь громоздким для значений L больше 5. Я пытаюсь использовать динамические решения, но я не получаю нигде.
Действительно, на данный момент я просто пытаюсь получить правильные ссылки на список, так что это то, на что я смотрю. Давайте на примере:
L1={p,q,r,s,t,u}
так
N=6
давайте посмотрим на все подмножества длины 3, чтобы держать его относительно коротким, так L = 3 (6c3 = 20 общих выходов).
В идеале ссылки список, которые будут ищутся:
{1,2,3}
{1,2,4}
{1,2,5}
{1,2,6}
{1,3,4}
{1,3,5}
{1,3,6}
{1,4,5}
{1,4,6}
{1,5,6}
{2,3,4}
{2,3,5}
{2,3,6}
{2,4,5}
{2,4,6}
{2,5,6}
{3,4,5}
{3,4,6}
{3,5,6}
{4,5,6}
Очевидно осуществляется:
FOR A,1,N-2
FOR B,A+1,N-1
FOR C,B+1,N
display {A,B,C}
END
END
END
Я сначала отсортировать данные N по убыванию который позволяет мне искать критерии, которые укоротить поиск и использование циклов FOR немного закручивают его в разных местах, когда я увеличиваю значения A, B и C внутри петель.
Я также ищу лучшие динамические решения. Я провел некоторые исследования в Интернете, но я не могу приспособить то, что там, к моей конкретной ситуации.
Любая помощь будет оценена по достоинству. Я стараюсь держать его достаточно кратким, чтобы не писать роман, а объяснять, к чему я пытаюсь добраться. Я могу предоставить более подробную информацию по мере необходимости.
Я добавил ti-basic tag из-за его языка программирования. Надеюсь, что все в порядке с этим – Earlz
Это прекрасно, @blz, мы вполне можем стать местом выбора для всех ti-basic кодеров сейчас :-) @Garrett, Я также воспользовался возможностью, чтобы немного уладить этот вопрос. Вы можете прочитать его, чтобы я ничего не винил. – paxdiablo
Вы рассмотрели, возможно, творческие способы использования gotos? или, возможно, используя 2 «программы» для реализации этого? (рекурсивно вызывающие друг друга) – Earlz