SICP 2.40 2.41 2.42 2.43

2.40

(define (unique-pairs n)
  (flatmap (lambda (i)
             (map (lambda (j) (list i j))
                  (enumerate-interval 1 (- i 1))))
           (enumerate-interval 1 n)))

2.41

(define (gentuple n s)
  (filter (lambda (x)
            (= (accumulate + 0 x) s))
          (flatmap (lambda (i)
                     (flatmap (lambda (j)
                                (map (lambda (k)
                                       (list i j k))
                                     (enumerate-interval 1 (- j 1))))
                              (enumerate-interval 1 (- i 1))))
                   (enumerate-interval 1 n))))

2.42

行号列号从1开始。从右向左逐步构造棋盘

(define empty-board '())

(define (adjoin-position new-row k rest-of-queens)
  (cons new-row rest-of-queens))

(define (safe? k positions)
  (define (iter ex-row ex1 ex2 lst)
    (if (null? lst)
        #t
        (if (or (= ex-row (car lst))
                (= ex1 (car lst))
                (= ex2 (car lst)))
            #f
            (iter ex-row (- ex1 1) (+ ex2 1) (cdr lst)))))
  (let ((c (car positions)))
    (iter c (- c 1) (+ c 1) (cdr positions))))

2.43

对于2.42中的程序,当board-size为n时,queens-cols调用1+n次;

对于Louis的程序:当k=1时,queens-cols会调用board-size次;当k=2时,queens-cols会调用board-size乘以当k=1时的次数;归纳得,queens-cols会调用board-size的board-size次方次。

于是Louis的程序的运行时间大约为2.42程序的board-size的board-size -1次方倍,

即:(* (expt board-size (- board-size 1)) T)

转载于:https://my.oschina.net/guzhou/blog/734330

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"SICP文版"是指计算机科学经典教材《Structure and Interpretation of Computer Programs》(计算机程序的构造和解释)的文翻译PDF版。这本教材由麻省理工学院的Harold Abelson和Gerald Jay Sussman等人编写,是计算机科学领域一本重要的教材。 "SICP文版PDF"提供了更方便的学习方式。无论是学生、程序员还是计算机科学爱好者,都可以在任何时候通过电子设备访问和学习这本教材。使用PDF格式的好处是可以在不同的平台上都能打开和阅读,而不受限于特定的操作系统或设备。 通过"SICP文版PDF",读者可以学习计算机科学的基本原理和概念,如过程、数据抽象、递归、高阶函数、并发等。这本教材以Scheme语言为示例,帮助读者理解计算机程序的结构、设计和解释。通过逐步的案例和练习,读者可以锻炼解决问题和编写高质量代码的能力。 "SICP文版PDF"也提供了沟通和讨论的平台。读者可以通过在线社群或论坛,与其他人分享学习心得、解答疑问和参与讨论。这为读者提供了一个学习交流的机会,促进了学习者之间的互动和共同成长。 总之,"SICP文版PDF"是一本经典的计算机科学教材的文翻译版本,使得更多的读者可以方便地学习和掌握其的知识。无论是对于计算机科学专业的学生还是对计算机科学感兴趣的人,这本教材都是一本很好的参考书,并提供了丰富的实例和练习,让读者深入理解计算机程序的核心概念和设计原则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值