-2

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)

ヒントを得ることができますか?

4

1 に答える 1

1

この問題の簡単な理由は次のとおりです。

  1. あなたはリストLと番号を持っていますS
  2. リストの最初の要素がソリューションの一部であるか、そうでないか
  3. 最初のものがソリューションの一部である場合は、それを使用する必要があり、より単純な問題のソリューション(rest L) (- S (first L))
  4. それが解決策の一部でない場合は、代わりにより単純な問題を解決する必要があります(rest L) S
  5. 検索を避けることができるいくつかのケースがあります...たとえば、リストが空でSゼロでない場合、またはすべての要素がゼロより大きく、それらすべてを合計しても到達できない場合S...
于 2012-09-29T06:25:56.153 に答える