上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 51 下一页
2014年3月20日
摘要: 2014-03-20 01:57题目:玩篮球投篮,有两种玩法:要么1投1中,要么3投两中。你单次投篮中的概率是p,那么对于不同的p,哪种玩法胜率更高?解法:第一种总是胜率更高,可以列不等式算算,结果发现是个恒不等式。代码: 1 // 7.1 Suppose you're playing a basketball game, you have two choices: 2 // A: one shot one hit 3 // B: three shots two hits 4 // For what probability of p would you choose A or B. 5 阅读全文
posted @ 2014-03-20 01:59 zhuli19901106 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 2014-03-20 01:14题目:有100栈灯,一开始都关着。如果你按照n从1~100的顺序,每次都掰一下n的倍数的开关(开->关,关->开),那么到最后有多少灯是亮的?解法:这个题目要多想想再动手,因为想通了以后就基本不用动手了。对于编号为x的灯,每当i是x的约数时,在第i轮时第x号灯就被掰了一次。比如6的约数为{1,2,3,6},6号灯被掰了4次。那么,每个灯被掰的次数就是约数个数次。约数个数的公式你懂的,但是用不着去算。如果一盏灯是开的,那么它就被掰了奇数次,根据约数和公式,只有因数分解之后所有指数都是偶数的时候,约数个数才为奇数。比如36的约数{1,2,3,4,6,9, 阅读全文
posted @ 2014-03-20 01:31 zhuli19901106 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 2014-03-20 01:08题目:扔鸡蛋问题。有一个鸡蛋,如果从N楼扔下去恰好会摔碎,低于N楼则不碎,可以继续扔。给你两个这样的鸡蛋,要求你一定得求出N,怎么扔才能减少最坏情况下的扔的次数?解法:为了让worst case得到最优化,就需要让best case和worst case最接近。具体做法请参见书上题解,因为我一直在想着二分,实在是摸不着头脑。代码: 1 // 6.5 Given 100 floors and 2 eggs. 2 // If the egg can sustain a dropping from nth floor, and will break for highe 阅读全文
posted @ 2014-03-20 01:14 zhuli19901106 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 2014-03-20 01:02题目:无力描述的一道智力题,真是货真价实的智力题,让我充分怀疑自己智力的智力题。有兴趣的还是看书去吧。解法:能把题目看懂,你就完成80%了,用反证法吧。代码: 1 // 6.4 There is an island with a bunch of people living there. 2 // The strange thing is, any blue-eyed tourists must leave immediately when they find out they're blue-eyed. 3 // Everyone can see ot 阅读全文
posted @ 2014-03-20 01:08 zhuli19901106 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 2014-03-20 00:48题目:有3升的瓶子和5升的瓶子,只允许倒满、倒到满为止、或是泼光三种操作,怎么搞出4升水呢?解法:如果A和B是互质的两个正整数,且A 5 using namespace std; 6 7 int gcd(int x, int y) 8 { 9 return x == 0 ? y : gcd(y % x, x);10 }11 12 int main()13 {14 int x, y;15 int vx, vy;16 int v;17 18 while (scanf("%d%d%d", &x, &y, &v) == ... 阅读全文
posted @ 2014-03-20 01:02 zhuli19901106 阅读(235) 评论(0) 推荐(0) 编辑
2014年3月19日
摘要: 2014-03-19 06:57题目:对于8x8的棋盘,如果拿掉对角位置的两个小块儿,能否用1x2的多米诺牌拼成剩下的棋盘?解法:不可能。且不说8x8,NxN都是不可能的。如果N是奇数,NxN-2是奇数,自然不可能用偶数的面积拼成。如果N为偶数,根据小学学过的染色问题,将1x2的骨牌染成1黑1白,那么最后拼成的棋盘肯定有31黑31白。问题是,摘掉的两个对角位置的颜色是一样的,所以得出矛盾,也不可能完成。代码:1 // 6.2 There is an 8x8 chessboard, if we remove the two pieces at diagonal corners, can you 阅读全文
posted @ 2014-03-19 06:54 zhuli19901106 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 2014-03-19 06:40题目:有20瓶药,其中19瓶装的都是1.0克的药片,只有1瓶装了1.1克的药。给你一个能称出具体克数的电子秤,只允许你称一次,怎么找出那瓶不一样的?解法:如果药片管够,从每个瓶子里取出数量各不相同的药片,根据质量的总和减去“期望的”质量总和,就知道哪瓶有问题了。代码: 1 // 6.1 There are 20 bottles of pills, all of which have pills of 1g, except one with 1.1g. 2 // Given a balance that can provides exact measurement 阅读全文
posted @ 2014-03-19 06:40 zhuli19901106 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 2014-03-19 06:33题目:用一个byte数组来模拟WxH的屏幕,每个二进制位表示一个像素。请设计一个画水平线的函数。解法:一个点一个点地画就可以了。如果要优化的话,其实可以把中间整字节的部分一口气画了,只用1/8的力气。代码: 1 // 5.8 Given a byte array, set a consecutive bit segment to '1'. 2 #include 3 #include 4 using namespace std; 5 6 typedef unsigned char byte; 7 8 inline void setBit(vecto 阅读全文
posted @ 2014-03-19 06:36 zhuli19901106 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 2014-03-19 06:27题目:有一个数组里包含了0~n中除了某个整数m之外的所有整数,你要设法找出这个m。限制条件为每次你只能用O(1)的时间访问第i个元素的第j位二进制位。解法:0~n的求和有公式可循,只要把所有数都加起来就能知道缺少的m是几了。书本提供了一种比较高效的解法,我仔细读了以后觉得书上给的优化算法实际上需要额外的空间来支持,coding难度偏高,临场的话我估计挺难写出来的。代码: 1 // 5.7 Find the missing integer from 0 to n, you may only access one bit at a time. 2 #include 阅读全文
posted @ 2014-03-19 06:33 zhuli19901106 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 2014-03-19 06:24题目:将一个整数的奇偶二进制位交换,(0, 1) (2, 3) ...解法:使用掩码来进行快速交换,定义掩码为'0101...'和‘1010...’。代码: 1 // 5.6 Swap odd and even bits in an integer. 2 #include 3 using namespace std; 4 5 unsigned int swapBits(unsigned int n) 6 { 7 static const unsigned int mask[2] = {0x55555555, 0xaaaaaaaa}; 8 9... 阅读全文
posted @ 2014-03-19 06:27 zhuli19901106 阅读(185) 评论(0) 推荐(0) 编辑
上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 51 下一页