我试图在lisp中编写子集和问题。
示例:(subsetsum '(1 2 3) 5)
= (2 3)
,(subsetsum '(1 5 3) 2)
= nil
。
我只能使用功能
(atom x)
(null x)
(eq x y)
(equal x y)
(numberp x)
(append x y)
(car x)
(cdr x)
(cons x y)
(if x y z)
(cond ... )
(let ((x y) (u v)) z)
(let* ((x y) (u v)) z)
(defun ...)
(quote x) and its short form 'x
(list x1 x2 ...)
(print ...)
(sort L fun)
我可以得到任何提示吗?
答案 0 :(得分:1)
此问题的简化推理如下:
L
和一个号码S
(rest L) (- S (first L))
(rest L) S
S
不为零,或者所有元素都大于零,甚至将所有元素相加你无法到达S
......