; compute nth fibonacci number using dynamic programming (define df (lambda (n) (let ((T (make-vector (+ n 1)))) (do ((i 0 (+ i 1))) ((> i n) (vector-ref T n)) (vector-set! T i (if (< i 2) i (+ (vector-ref T (- i 2)) (vector-ref T (- i 1))))))))) (load "2d-table.scm") ;; compute choose(n, k) by dynamic programing (define dpchoose (lambda (n k) (let ((T (make-table (+ n 1) (+ k 1)))) (do ((i 0 (+ i 1))) ((> i n) (table-ref T n k)) (do ((j 0 (+ j 1))) ((> j (min i k))) (table-set! T i j (cond ((= j 0) 1) ((= i j) 1) (else (+ (table-ref T (- i 1) (- j 1)) (table-ref T (- i 1) j))))))))))