《programming for the puzzled》第八章你认识很多人,想办一个晚宴。但是你认识的人中有的是互相敌视的。你要确保邀请的人不会互相打起来搅乱宴会,但同时又要有尽可能多的人参加晚宴。假设你的社交圈是一个图,每个顶点是一个朋友。如果两个人之间有一条边,说明这两个人至少有一个人不喜欢对
...
《programming for the puzzled》第七章涉及到的知识浮点数和算术运算,二分搜索。问题:找到一组数的平方根。迭代搜索已知一个数n是完全平方数,可以从1开始计算其平方值,如果小于n,加一,再重复,直到其平方值等于n。这对于计算机来说是可行的,但还有更快的解法。先实现这个算法吧。
...
《programming for the puzzled》第六章涉及到的知识:案例分析,分治法。在9个硬币中找到一个赝品。假的比真的重一些,你的任务是使称重的次数最少。你需要称几次?穷举,选出一个硬币与其它八个依次对比,最差需要称八次。用分治法可以做得更好。先从9个硬币中选出四个,分两组称。有三种情
...
《programming for the puzzled》第五章涉及到的知识:break语句,基数运算(radix representations)问题概述:测量一些水晶球的“硬度系数”。2015年完工的上海塔有128层,你要找出从多高的地方扔下这些水晶球,它们不会破碎而是弹起来。返回的结果是满足条
...