内容推荐 在计算机技术发展日新月异的当下,“算法”是不变的重要基石。要想编写高效率的程序,就需要优化算法。无论开发工具如何进化,熟识并能灵活运用算法仍然是对程序员的基本要求。本书作者“寓教于题”,精心设计了70道算法趣题。所有问题都贴近生活和实际应用,兼具实用性和趣味性。读者在自行思考和解题后,可以对比查看作者分析的解题思路和关键点,阅读基于Ruby和JavaScript编程语言编写的源代码示例,从而掌握不同的算法实现思路和程序优化技巧。 本书适合已经学习过排序、搜索等知名算法,并想要学习更多有趣的算法以提升编程技巧、拓展程序设计思路的工程师,以及想挑战程序设计竞赛的读者阅读。 作者简介 增井敏克,1979年生于奈良,毕业于大阪府立大学研究生院。增井IT工程师事务所代表、注册工程师(信息工程学方向)。从事旨在“将商务、数学和IT结合以正确、高效使用计算机”的技能提升指导、软件开发以及信息安全咨询等工作。掌握C/C++、C#、Java、PHP和Ruby等20多种编程语言。著作有《在家就能学会的安全基础》等。目前在面向IT工程师提供业务技能评估服务的平台CodeIQ上负责人气栏目“每周算法”的出题和评审工作。 目录 序章 解答谜题的技巧 掌握典型的处理方式 例题1 内存化和动态规划算法 例题2 排列组合 第1章 入门篇 动手编程寻找感觉 思考多种解题方法 Q01 少数服从多数 Q02 山手线的印章比赛 Q03 罗马数字的转换规则 Q04 电子钟的亮灯数 Q05 杨辉三角 Q06 在长方形中取正方形 Q07 让文件恢复原位 Q08 合并单元格与一笔画 Q09 八进制自幂数 Q10 采用亚当斯方式分配议席 Q11 奥运会主办城市投票 Q12 用分数表示圆周率的近似值 Q13 反复排序 Q14 兑换外币 Q15 深度优先搜索按广度优先排列节点的二叉树 Q16 最简分数 第2章 初级篇 通过内存化等方式提高处理速度 数学谜题对日常的软件开发有用吗 Q17 一起乘缆车 Q18 紧急通道的逃生方式 Q19 布局合理的窗帘挂钩 Q20 醉酒后的回家路 Q21 读书计划 Q22 通过百格计算查找最短路径 Q23 巧排座位 Q24 预约选座的奥秘 Q25 左右对称的二叉查找树 Q26 指定次数的猜拳游戏 Q27 巧分巧克力 Q28 设计高尔夫球场 Q29 平分蛋糕 Q30 轮流取卡片 Q31 无法排序的卡片 Q32 地铁高峰期的乘车礼仪 Q33 白色情人节的回礼 Q34 左右交替移动 Q35 智慧型组织者的收钱妙招 Q36 上下左右颠倒数字 Q37 巧开机械密码锁 Q38 全员大换位 第3章 中级篇 利用数学思维实现高速处理 由小及大地找寻规律 Q39 同色相邻即消除 Q40 两船相遇问题 Q41 开始菜单的磁贴 Q42 忙碌的圣诞老人 Q43 同桌但不相邻的情侣 Q44 三进制问题 Q45 一笔画的交叉点 Q46 一笔画的拐弯问题 Q47 压缩字符串 Q48 平分卡片数值 Q49 按申请编号表分组 Q50 按战斗力给精灵分组 Q51 用位置相邻的数字构成平方数 Q52 玩转俄罗斯套娃 Q53 运送重量为质数的货物 Q54 用天平称重 Q55 十字形翻转统一色系 Q56 指定次数的猜拳游戏2 Q57 车站的设置方式 Q58 波兰表示法和去括号 Q59 比分大作战 Q60 三子棋的玩法 第4章 高级篇 正确实现复杂的处理 试着查一下代码库 Q61 交叉排序 Q62 破损的晾衣架 Q63 永不停歇的台球 Q64 以最短路径往返的图形 Q65 n皇后翻转问题 Q66 整数倍的得票数 Q67 迷宫的最长路径 Q68 Base64格式反转 Q69 文件数各异的文件夹结构 Q70 不买和他人一样的商品 |