2014-04-28
22:05题目:写个程序判断三连棋哪一方赢了。解法:三个相同的棋子连成一条横线,竖线或者对角线就判断为赢了。代码: 1 // 17.2 Write an
algorithm to check if someone has won the tic-tac-toe game. 2 ...
分类:
其他好文 时间:
2014-04-29 18:12:07
阅读次数:
474
2014-04-28
22:32题目:不用if语句或者比较运算符的情况下,实现max函数,返回两个数中更大的一个。解法:每当碰见这种无聊的“不用XXX,给我XXX”型的题目,我都默认处理的是int类型。最高位是符号位,用x
- y的符号位来判断谁大谁小。请看下面代码,条件表达式配合异或运算能满足题目...
分类:
其他好文 时间:
2014-04-29 18:10:05
阅读次数:
395
2014-04-28
22:18题目:计算N的阶乘尾巴上有多少个零?解法:计算5的个数即可,因为2 * 5 = 10,2的个数肯定比5多。计算5的个数可以在对数时间内搞定。代码: 1
// 17.3 Count how many zeros are there in n!? 2 // Count t...
分类:
其他好文 时间:
2014-04-29 17:45:30
阅读次数:
365
2014-04-28
21:45题目:就地交换两个数,不使用额外的变量。解法:没说是整数,我姑且先当整数处理吧。就地交换可以用加法、乘法、异或完成,其中乘法和加法都存在溢出问题。三种方法都不能处理交换同一个数的情况,需要条件判断。代码:
1 // 17.1 Do a swapping in-plac...
分类:
其他好文 时间:
2014-04-29 17:19:40
阅读次数:
343
2014-04-28
22:44题目:猜数字游戏。四个数字,每个都是0~9之间。你每猜一次,我都告诉你,有多少个位置和数字都对(全对),有多少个位置错数字对(半对)。比如“6309”,你猜“3701”,就有1全对,1半对。解法:依照题意写就可以了。代码:
1 // 17.5 I am the Mas...
分类:
其他好文 时间:
2014-04-29 17:10:21
阅读次数:
384
2014-04-27
20:16题目:假设一个类Foo有三个公有的成员方法first()、second()、third()。请用锁的方法来控制调用行为,使得他们的执行循序总是遵从first、second、third的顺序。解法:你应该想到了用lock的方法类阻塞,不过这里面有个概念问题使得直接用Re...
分类:
编程语言 时间:
2014-04-28 02:27:03
阅读次数:
506
2014-04-27
20:06题目:设计一个类,只有在不产生死锁的时候才分配资源。解法:不太清楚这个题是要分配何种资源,以何种形式?所以没能动手写个可运行的代码,只是闲扯了几句理论分析。代码:
1 // 16.4 Design a class which provides a lock only ...
分类:
编程语言 时间:
2014-04-28 01:21:58
阅读次数:
558
2014-04-27
20:25题目:关于java中标有synchronized的成员方法?解法:这代表同一个对象实例的synchronized方法不能被多个线程同时调用。注意有这么多个地方都加粗了,如果这些条件有一个不满足的话,就是可以调用的。另外,如果此方法是静态成员方法,
那么总可以认为是“同...
分类:
编程语言 时间:
2014-04-28 01:16:06
阅读次数:
583
2014-04-27
19:26题目:哲学家吃饭问题,死锁问题经典模型(专门用来黑哲学家的?)。解法:死锁四条件:1. 资源互斥。2. 请求保持。3. 非抢占。4.
循环等待。所以,某砖家拿起一只筷子后如果发现没有另一只了,就必须把手里这只筷子放下,这应该是通过破坏“请求保持”原则来防止死锁产生,请...
分类:
编程语言 时间:
2014-04-27 21:30:09
阅读次数:
699
2014-04-27
19:14题目:如何测量上下文切换的时间?解法:首先,上下文切换是什么,一搜就知道。对于这么一个极短的时间,要测量的话,可以通过放大N倍的方法。比如:有A和B两件事,并且经常一起发生,每件只需要花几纳秒。如果你把A事件连续做几百万次,而B时间只做了几次,这样就能排除B事件对于测...
分类:
编程语言 时间:
2014-04-27 21:24:59
阅读次数:
672