问题:n*n的行列有序的矩阵M,求第K大的数。行列有序是指每行、每列都是有序的。
最直接的办法就是给整个矩阵排序,然后找第K大的数。复杂度是(O(n^2logk))。其实还有更快的办法。
假设行列都是增序。注意到在矩阵的对角线上中任选一点x,右下角的矩阵里面的数都大于或等于x,而这里包含了(x^2)个数。因此,必然可以找到一个位置x,使得 ((x+1)^2leq n-kleq x^2) 。 这样K就在 M(x+1, x+1) .. M(x+1, n) 和 M(x+1, x+1) .. M(n, x+1) 以及 x 这三个范围内。
对这个范围内的数字排序,找第K个数字,复杂度是 (O(nl[......]
阅读全文
Posted in 算法(algorithm) |
问题:给一个8位的字节,按位逆序。第一反应给了个简单的做法:
unsigned short intreverse_bit(unsigned short int b)
{
unsigned short int r = 0;
for (int i=0; i<8; i++) {
b >> = 1
r = (r << 1) | (b & 1);
}
return r;
}
每次循环,r左移一位,b取最后一位填充到r的最后一位上,这个解答需要做8次循环,32次操作(左移一次,加法一次,右移一次,按位与一次)。很明显还有更好的做法。
unsigned short int reverse_bit(unsigned short int b)
{
b = b << 4 + b >> 4; // &11110000, 56781234
b = (b & 0x33) << 2 + (b & 0xCC) >> 2; // &11001100, 78563412
b = (b & 0x55) << 1 + (b & 0xAA) >> 1; // &10101010, 87654321
return b;
}
只需13次操作。
[......]
阅读全文
Posted in C/C++, 算法(algorithm) |
题目意思大概是,象棋棋盘上只有一相一帅,只能在9宫格内移动,且不能对面。要求给出相帅所有的位置的可能性,只能用一个变量。
只用一个变量,第一感是用位操作。给九宫格编个号:
1 2 3
4 5 6
7 8 9
遍历所有的位置,如果 位置编号 mod 3相同,说明在同一列中。按此思路,书中位操作的解法略显繁杂。这里一个简洁的的解法是:
如果不用位操作的话,另外一个解法比较赞:
Posted in C/C++, 算法(algorithm) |
NES Electric Guitar
这把看起来酷酷的吉他实际上是由国外的发烧友用老式的任天堂主机改造而成的,采用标准的六弦吉他弦把,带有音量调节和节拍按钮。每把吉他都是全手工定制的。

http://2.bp.blogspot.com/_T_JachDW9ag/TQBg7uW88OI/AAAAAAAAKxM/iHFKt4oNQQc/s800/DSC05558.jpg
iRobot Scooba 380
iRobot Scooba是一个获奖的产品,目的是替代传统的拖把,它可以自动帮你将房间地板清洗的干干净净。内部清洗系统的包括吸尘、打清洗剂、刷洗以及清理四个步骤,效果比拖把要好很多。还可以通[......]
阅读全文
Posted in 极客&玩物(Geek&Gadget) | Tagged Gadget, geek |
Windows 7 或者 Windows Server 2008 默认情况下不支持IPX协议,而在很多需要局域网的游戏中还是经常需要用到IPX协议的。解决办法就是从XP系统中复制出IPX协议的驱动文件,然后在Windows 7的网卡的配置界面中就可以找到IPX协议的添加项了。
相关文件是:
X86版本
Windowsinfnetnwlnk.pnf
Windowsinfnetnwlnk.inf
WindowsSystem32rtipxmib.dll
WindowsSystem32nwprovau.dll
WindowsSystem32wshisn.dll
WindowsSystem32[......]
阅读全文
Posted in 知(knowledge), 系统(system) | Tagged IPX |
AP Logger Architecture

The above image shows the architecture of Android logging system.It provides a java class for logging named android.util.Log. It also provides log macros for native C applications in liblog.
There are four log devices in the kernel.Three for user space log: /dev/log/main[......]
阅读全文
Posted in android, debug | Tagged android, debug, log |