您的位置:首页 > 职场人生

A001-书籍-像程序员一思考

2016-06-14 17:04 197 查看
书籍:《像程序员一思考》(修订版-2015)

主要内容:1、摘录

2、习题解答

-------------------------------------------------------------------------------------------------------------------------------------

一、 摘录:

-------------------------------------------------------------------------------------------------------------------------------------

二、 习题:

1.1、 在线数独游戏http://en.oubk.com/DailySudoku/16966/3

解决中等难度数独游戏的通用计划:
1、找到已知数字最多的 行/列/(3*3)区域,根据游戏的约束条件在空格中填入正确的数字。

2、填完一遍之后,如果确实在该 行/列/(3*3)区域
的空格中填入了数字,就根据约束条件重新再填一遍。

一直重复这个步骤,直到该 行/列/(3*3)区域 没有填入任何数字,最后返回步骤1。

3、若该 行/列/(3*3)区域
剩余2个空格,且每个空格都可以填入剩余的2个数中的任何一个,随机填入一种可能,但要满足约束条件。

4、若该 行/列/(3*3)区域
的全部空格都有>=3种可能的数字可以填,那么在其中2个空格中随机填入一种可能,但要满足约束条件。

最后返回步骤1。

1.2、 数字滑块游戏: http://www.4399.com/flash/126673_2.htm

难度翻了1番吧,人们通常只习惯数字序列,而不是文字序列或图片序列,序列很适合使用旋转/火车列的方式移动而不出错。
而图片可以更直观的看出一行(或一列)的图片是否拼好,以至于将n*m阶将为(n-1)*m阶(或n*(m-1)阶),这是好处,数字就需要慢慢数。

1.3、 数字拼图游戏

新的策略-插入法(对于2*3以上的拼图,可以使用如下策略,当拼图评到等于2*3时就不适用了):

1、目的是将数字直接插入正确的位置,通过旋转的方法,如、下面将最左边一列的3个数字直接插入到位:



















另外、发现2个无解的拼图:





1.4、 简化问题:

1、重新表述这个问题,将它拆分成多个相联系的小块

2、弱化或去掉一些约束条件

同类迷题:传教士和吃人恶魔问题:https://zh.wikipedia.org/wiki/传教士和吃人恶魔问题

1.5、 陷入僵局时:

1、将问题的约束条件列出来

2、将所有可能的操作列出来

3、简化问题

-------------------------------------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: