Задача о рюкзаке - Lisp
Формулировка задачи:
Алгоритм решает задачу о рюкзаке, которая формулируется так: дан, упорядоченный по убыванию, массив A целых положительных чисел и некоторые Sum, необходимо найти подпоследовательности массива A, сумма элементов которых равна в точности Sum.
Решение задачи: «Задача о рюкзаке»
textual
Листинг программы
(defun knapstack (w n &optional acc ac &aux (a (car w)) (d (cdr w)) (b (cons a ac))) (if w (let ((z (apply #'+ b))) (knapstack d n (if (= z n) (adjoin (reverse b) acc :test #'equal) (knapstack d n acc ac)) (if (< z n) b ac))) acc)) > (knapstack '(9 8 7 6 5 4 3 2 1) 13) ((9 3 1) (9 4) (8 4 1) (8 3 2) (8 5) (7 5 1) (7 4 2) (7 3 2 1) (7 6) (6 5 2) (6 4 2 1) (6 4 3) (5 4 3 1))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д