
算法
往事已遥远
无论你走的多远也走不出我的心;黄昏时的树影拖得再长也拖不出树的根
展开
-
用递归颠倒一个栈
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。 分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一pop出来,放到一个数组里,然后在数组里颠倒所有元素,最后把数组中的所有元素逐一push进入栈。这时栈也就颠倒过来了。颠倒一个数组是一件很容易的事情。不过这种思路需要显示分配一个长度为O(n)的数组,转载 2012-06-30 14:08:12 · 406 阅读 · 0 评论 -
斐波那契数列--编程之美(待完善)
解法三:分治策略: 注意到Fibonacci数列是二阶递推数列,所以存在一个2*2的矩阵A,使得:(F[n] F[n-1])=(F[n-1] F[n-2])*A,结合F[n]=F[n-1]+F[n-2]求解,可得:A=1 1,1 0(上面是1 1,下面为1 0),由上面的矩阵递推公式有:(F[n] F[n-1])=(F[n-1] F[n-2])*A=(F[n-2] F[n-3])*A^2=.转载 2012-08-23 21:29:55 · 1223 阅读 · 0 评论 -
用一个变量实现双重循环
用一个变量实现双重循环 char i = 81; while( i-- ) { if(i/9%3 == i%9%3) continue; printf("A = %d, B = %d", i/9 +1, i%9 +1); } i--,i减9次,i/9减一次,i%9减9次 所以i减81次,i/9减9次,i%9减81次 实现了9*9的循环 所以,若原创 2012-08-23 10:35:01 · 690 阅读 · 0 评论 -
整数划分 --- 一个老生长谈的问题 动态规划
整数划分 --- 一个老生长谈的问题: 1) 练练组合数学能力. 2) 练练递归思想 3) 练练DP 总之是一道经典的不能再经典的题目: 这道好题求: 1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。 3. 将n划分成最大数不超过k的划分数。 4. 将n划分成若干奇正整数之和的划分数。 5. 将n划分成若转载 2012-09-04 22:15:53 · 4511 阅读 · 1 评论 -
Android帧缓冲区状态监控过程源码分析
https://www.2cto.com/kf/201312/261730.html SurfaceFlinger服务在启动的时候,会创建一个线程来监控由内核发出的帧缓冲区硬件事件。每当帧缓冲区要进入睡眠状态时,内核就会发出一个睡眠事件,这时候SurfaceFlinger服务就会执行一个释放屏幕的操作;而当帧缓冲区从睡眠状态唤醒时,内核就会发出一个唤醒事件,这时候SurfaceFlinge...转载 2018-12-20 10:33:28 · 204 阅读 · 0 评论