有趣的智力题测验,你答对了吗
巡山小妖精
784次浏览
2021年01月30日 02:06
最佳经验
本文由作者推荐
结婚致辞-照顾的近义词
1.
考虑一个双人游戏。
游戏在一个圆桌上进行。
每个游戏者都有足够多的 硬币。
他们需要在桌子上轮流放置硬币,
每次必需且只能放置一枚硬币,
要求硬币完全
置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。
谁没有地方放置 新的硬币,
谁就输了。
游戏的先行者还是后行者有必胜策略?这
种策略是什么?
答案:
先行者在桌子中心放置一枚硬币,
以后的硬币总是放在与后行者刚才放的< br>地方相对称的位置。这样,只要后行者能放,先行者一定也有地方放。先行者必
胜。
2.
用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序。
答案:先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);
然后用同样的办 法将每个单词内部的字符逆序。
这样,
整篇文章的单词顺序颠倒
了,但单词本身又被转 回来了。
3.
用线性时间和常数附加空间将一个长度为
n的字符串向左循环移动
m
位(例
如,”abcdefg”移动
3
位就变成了”defgabc”)。
答案:
把字符串切成长为
m
和
n-m
的两半。将这两个部分分别逆序,
再对整个字
符串逆序。
4.
一个矩形蛋糕,蛋糕内部有一块矩形的空洞。只用一刀,如何将蛋糕切成大< br>小相等的两块?
答案:
注意到平分矩形面积的线都经过矩形的中心。
过大矩形和空心矩形各自的
中心画一条线,
这条线显然把两个矩形都分成了一半,
它们 的差当然也是相等的。
5.
一块矩形的巧克力,初始时由
N x M
个小块组成。每一次你只能把一块巧克
力掰成两个小矩形。最少需要几次才能把它们掰成
N x M
块
1×1
的小巧克力?
答案:
N x M - 1
次显然足够了。这个数目也是必需的,因为每掰一次后当前巧
克力的块数只能增加一 ,把巧克力分成
N x M
块当然需要至少掰
N x M - 1
次。
6.
如何快速找出一个
32
位整数的 二进制表达里有多少个”1″?用关于”1″
的个数的线性时间?
答案
1
(关于数字位数线性):
for(n=0; b; b >>= 1) if (b & 1) n++;
答案
2
(关于”1″的个数线性):
for(n=0; b; n++) b &= b-1;
7.
一个大小为
N
的数组,所有数都是不超过
N-1
的正整数。用
O(N)
的时间找出
重复的那个数(假设只有一 个)。一个大小为
N
的数组,所有数都是不超过
N+1
的正整数。用
O(N)
的时间找出没有出现过的那个数(假设只有一个)。
答案:
计算数 组中的所有数的和,再计算出从
1
到
N-1
的所有数的和,
两者之差
即为重复的那个数。
计算数组中的所有数的和,
再计算出从
1
到N+1
的所有数的
和,两者之差即为缺少的那个数。
8.
给出一行
C
语言表达式,判断给定的整数是否是一个
2
的幂。
答案:
(b & (b-1)) == 0
9.
地球上有 多少个点,使得从该点出发向南走一英里,向东走一英里,再向北
走一英里之后恰好回到了起点?