程序员的算法趣题 内容简介
本书是一本解谜式的趣味算法书,从实际应用出发,通过趣味谜题的解谜过程,引导读者在愉悦中提升思维能力、掌握算法精髓。此外,本书作者在谜题解答上,通过算法的关键原理讲解,从思维细节入手,发掘启发性算法新解,并辅以Ruby、JavaScript等不同语言编写的源代码示例,使读者在算法思维与编程实践的分合之间,切实提高编程能力。
程序员的算法趣题 目录
第1章 入门篇
尝试用编程解决问题 001
二进制和十进制 002
Q01 回文十进制数 003
Q02 数列的四则运算 007
Q03 翻牌 011
Q04 切分木棒 015
Q05 还在用现金支付吗 019
Q06 (改版)考拉兹猜想 023
Q07 日期的二进制转换 025
Q08 优秀的扫地机器人 029
Q09 落单的男女 031
Q10 轮盘的最大值 035
第2章 初级篇
解决简单问题 体会算法效果 039
性价比意识 040
Q11 斐波那契数列 041
Q12 平方根数字 045
Q13 有多少种满足字母算式的解法 049
Q14 世界杯参赛国的国名接龙 055
Q15 走楼梯 059
Q16 3根绳子折成四边形 063
Q17 挑战30人31足 067
Q18 水果酥饼日 071
Q19 朋友的朋友也是朋友吗 075
Q20 受难立面魔方阵 079
Q21 异或运算三角形 083
Q22 不缠绕的纸杯电话 087
Q23 二十一点通吃 089
Q24 完美的三振出局 091
Q25 鞋带的时髦系法 093
Q26 高效的立体停车场 097
Q27 禁止右转也没关系吗 101
Q28 社团活动的最优分配方案 105
Q29 合成电阻的黄金分割比 109
Q30 用插线板制作章鱼脚状线路 113
第3章 中级篇
优化算法 实现高速处理 117
时间复杂度记法和计算量 118
Q31 计算最短路径 119
Q32 榻榻米的铺法 123
Q33 飞车与角行的棋步 127
Q34 会有几次命中注定的相遇 131
Q35 0和7的回文数 133
Q36 翻转骰子 137
Q37 翻转7段码 143
Q38 填充白色 149
Q39 反复排序 153
Q40 优雅的IP地址 157
Q41 只用1个数字表示1234 161
Q42 将牌洗为逆序 165
Q43 让玻璃杯水量减半 169
Q44 质数矩阵 173
Q45 排序交换次数的最少化 177
Q46 唯一的○×序列 181
Q47 格雷码循环 185
Q48 翻转得到交错排列 189
Q49 欲速则不达 193
Q50 完美洗牌 197
Q51 同时结束的沙漏 201
Q52 糖果恶作剧 205
Q53 同数包夹 209
Q54 偷懒的算盘 213
Q55 平分蛋糕 217
第4章 高级篇
改变思路 让程序速度更快 221
编码风格 222
Q56 鬼脚图中的横线 223
Q57 最快的联络网 229
Q58 丢手绢游戏中的总移动距离 233
Q59 合并单元格的方式 239
Q60 分割为同样大小 247
Q61 不交叉,一笔画下去 253
Q62 日历的最大矩形 259
Q63 迷宫会合 263
Q64 麻烦的投接球 269
Q65 图形的一笔画 273
Q66 设计填字游戏 279
Q67 不挨着坐是一种礼节吗 283
Q68 异性相邻的座次安排 287
Q69 蓝白歌会 291
程序员的算法趣题 精彩文摘
程序员是个非常有魅力的职业,他们写几行代码就能从零开始创造新的价值。从某种意义上说,这可以称得上是“发明创造”。
大家有时候也会谈论,适合这种职业的究竟是什么样的人呢?提到程序员,大家通常会有理工科大学毕业、宅、喜欢游戏等印象。事实上,在编程开发的前线,文科出身的程序员还是挺多的,也有很喜欢运动的程序员。
如果非要给出一个适合做程序员的条件,我的第一反应是“讨厌麻烦”这几个字,也就是不喜欢重复机械的工作,希望尽可能地实现自动化。如果某个工作需要花费 30 分钟进行机械重复的操作,程序员可能会为了瞬间完成工作而花费 1 个小时来编程实现。大概就是这种心境吧。
事实上,我学习编程的契机也是碰到了麻烦的事情。学生时期,老师告诉我,要想记住键盘上的键位,就要不断地从 A 敲到 Z。要一直重复练习,直到让屏幕填满字母。
我很讨厌这种重复劳动,为了轻松一点,就编写了一个自动让屏幕填满 A 到 Z 的程序。保存好这个程序之后,下一次再执行,就可以一瞬间将字母填满屏幕。
在那之后,每当遇到麻烦的事情,我就不断编写程序来解决,无形中练就各种编程技巧。我与编程因琐碎小事而邂逅,如今算来都已经 20 余年了。
本文来自润情无声投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。