max sum ของ sub array ด้วย scheme (ไม่รู้ถูกเปล่านะครับ)

max sum ของ sub array ด้วย scheme. ไม่รู้ถูกเปล่านะครับ หมายถึงว่า algorithm ที่ใช้อาจจะผิดเลย :-P.

(define (mktab seq tab) 
  (let ((pmktab (lambda (tab) 
                  (mktab (cdr seq) tab))))
    (if (null? seq)
        tab
        (let ((val (car seq)))
          (if (null? tab)
              (if (> val 0)
                  (let ((ans (list (list val))))
                    (pmktab (list val ans)))
                  (let ((ans (list)))
                    (pmktab (list (list 0 ans)))))
              (let ((sum (+ val (caar tab)))
                    (prev_ans (cadar tab)))
                (if (>= sum val)
                    (let ((ans (cons val prev_ans)))
                      (pmktab (cons (list sum ans) tab)))
                    (let ((ans (list val)))
                      (pmktab (cons (list val ans) tab))))))))))
 
 
(define (find_max tab mans mval)
  (if (null? tab)
      mans
      (let ((tval (caar tab))
            (tans (cadar tab))
            (p_find_max (lambda (p_mans p_mval)
                          (find_max (cdr tab) 
                                    p_mans 
                                    p_mval))))
        (if (> tval mval)
            (p_find_max tans tval)
            (p_find_max mans mval)))))
 
 
(define (maxsub seq)
  (reverse (find_max (mktab seq (list)) (list) 0)))
 
(maxsub (list -1 2 5 -1 3 -2 1))
veer's picture

ลองอ่านเฉลยของอ.มะนาวให้มาดู หวังว่าที่ผมเขียนจะคล้าน sol4 นะ แต่เปลือง space กว่ามากมาย -_-'. อีกอยากได้คำตอบเป็น sequence ด้วย เหมือนเข้าใจโจทย์เปล่าเนี่ย -_-!.

http://www.cs.ucf.edu/~reinhard/classes/cop3503/mcss.pdf

ตอนเก็บผลลัพธ์ผมทำถึกๆอะ
---
http://openil.wordpress.com/

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น