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))
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
ลองอ่านเฉลยของอ.มะนาวให้มาดู หวังว่าที่ผมเขียนจะคล้าน sol4 นะ แต่เปลือง space กว่ามากมาย -_-'. อีกอยากได้คำตอบเป็น sequence ด้วย เหมือนเข้าใจโจทย์เปล่าเนี่ย -_-!.
http://www.cs.ucf.edu/~reinhard/classes/cop3503/mcss.pdf
ตอนเก็บผลลัพธ์ผมทำถึกๆอะ
---
http://openil.wordpress.com/