读书笔记
文章平均质量分 69
li4951
这个作者很懒,什么都没留下…
展开
-
书单计划
《代码大全》:以前经常要写一个精巧算法高深简短的代码。读了Code Complete之后理解了什么是好的代码。原创 2013-09-15 21:45:33 · 1041 阅读 · 0 评论 -
编程之美3.11 二分查找常见问题
二分查找原理简单,但写起来比较容易错,只要记住一点:小心的处理边界。就没什么问题了。下面是分别是三种常用的查找要求的实现:(1)给定一个有序(非降序)数组arr,求任意一个i使得arr[i]等于value,不存在返回-1。(2)给定一个有序(非降序)数组arr,求第一个i使得arr[i]等于value,不存在返回-1。(3)给定一个有序(非降序)数组arr,求最后一个i使得ar原创 2013-04-02 17:40:27 · 2357 阅读 · 2 评论 -
生活中的计算机
学计算机专业多年,习惯性的总去探索事物背后的计算机原理,收录如下(同时和大家分享下,遇到问题时重要的不是查阅读资料搜索答案,而是认真的思考后通过程序去验证自己的假设)。持续更新……问题5(2012.)暑假突发奇想,每次按下空调遥控器,都需要向空调发送那些信息指令?空调遥控器和电视遥控器有什么区别?我认为空调遥控器每次按键后都会将空调遥控器显示的所有状态都发送给空调主机。包括温度,模原创 2012-09-07 19:03:49 · 1551 阅读 · 0 评论 -
异或操作交换元素容易产生的问题
零.Introduction利用异或操作交换两个元素已不是什么新鲜话题了。1异或写法:{ a ^= b; b ^= a; a ^= b;}2传统写法:{ int temp = a; a = b; b = temp;}有很多程序员已经逐渐接受并喜欢使用这种异或写法了,问之优点,大多数程序员都会从时间性能,空间性能,简洁性原创 2011-11-07 11:11:36 · 1793 阅读 · 1 评论 -
编程之美——小飞的电梯调度算法之新解
亚洲微软研究院所在的希格玛大厦一共有6部电梯。在高峰时间,每层都有人上下,电梯每层都停。实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候,每个乘客选择自己的目的层,电梯则计算出原创 2012-04-22 10:56:39 · 5470 阅读 · 8 评论 -
经典冒泡排序,你写对了吗?
冒泡排序可是排序入门级别的排序算法了。算法比较简单,可是观察周围科班出身的学生或者应聘者,能将这一简单排序算法正确完整的写出来的真的不多。据调查,出一道题给20个印度程序员写代码,结果基本一样,而中国的程序员的结果却五花八门。这点对大型软件设计效率的提高非常不利。现在就给出经典冒泡排序的正确写法,看看与你写的有什么不同?孰胜孰劣?void bubbleSort(int array[], int原创 2011-11-06 09:40:37 · 1720 阅读 · 3 评论 -
编程之美2.16 最长上升子序列
如何求一个一维数组(N个元素)中最长递增子序列?例如给定序列1-1,2,-3,4,-5,6,,-7,其中最长递增子序列的长度为4(如1,2,4,6)。经典解法:也是传统解法,动态规划,每加入一个新的数字,则检查是否和前面所记录的序列能组成更长序列。示例如下:扫描序列 1 -1 2 -3 4 ……记录序列最大值 1 -1 2 1 4 ……记录序列长度 1原创 2011-11-06 09:37:58 · 879 阅读 · 2 评论 -
编程之美 3.2电话号码对应英语单词
原始问题如下:手机上面的数字键均对应了几个字符,譬如2对应了a,b,c。问题是当输入一段数字后,求出所有可能的字符组合,(可以想象一下发短信时候的状况,每当按几个数字键后,均给出可能的汉语拼音,当然这个要求就更高了,本题只要求给出所有可能的组合)。举个例子输入4,2键后,则给出GA,GB,GC,HA,HB,HC,IA,IB,IC组合。当然对于大多数人来说就是几层循环就搞定了,每层遍历,内部原创 2011-11-06 09:30:19 · 2244 阅读 · 0 评论 -
编程之美2.3 寻找发帖“水王”
扩展问题:找出有3个发帖很多的ID,他们的发帖数目都超过了总数目N的1/4.你能从发帖ID列表中快速找出他们的ID吗?#includeusing namespace std;void find(int id[], int N){ int box[4]; int count[4]; memset(count, 0, sizeof(count)); int i原创 2011-11-06 09:39:15 · 2726 阅读 · 0 评论 -
常犯错误记录
1.位运算和逻辑运算在一起时,小心优先级问题plNodeState & testBit != 0(plNodeState & testBit) != 0后者为我的真正用意。代价:花了近乎半个小时才发现这个错误。2.fgets()能把最后的换行也读了:"\n\0"3.getchar()读的是缓冲区。每当换行进入缓冲区,就从缓冲区队列前读入一个字符, IO函数要小心行缓冲等;原创 2013-05-23 17:19:48 · 767 阅读 · 0 评论