
趣味题
gukesdo
这个作者很懒,什么都没留下…
展开
-
牛奶杯和水杯
有两个大小完全相同的杯子,一个里面装牛奶,另一个里面装相同体积的水。现在从牛奶杯中舀出一勺到水杯中,搅拌均匀后再从水杯中舀出一勺到牛奶杯中。问现在是牛奶杯中含有的水多还是水杯中含有的牛奶多,还是两者一样多。1. 开始想到的是用公式推算,当然也能得出正确结果2. 这个问题其实考的是一种思维方式,一种思路。其实从牛奶杯中少的牛奶和从水杯中少的水是一样多的,而且从水杯中少的水原创 2012-05-30 09:27:47 · 2080 阅读 · 0 评论 -
从1到n的一个序列依次入栈,则一共可能有多少种出栈方式?
http://baike.baidu.com/view/2499752.htm这个问题属于卡特兰数(h(n)=C(2n,n)/(n+1) (n=1,2,3,...))的应用,共有c(2n,n)-c(2n,n+1)=1/(n+1)*c(2n,n)中方式出栈。对于每一个数来说,必须进栈一次、出栈一次。我们把进栈设为状态‘1’,出栈设为状态‘0’。n个数的所有状态对应n个1和n个0组成的2n位二转载 2012-04-08 22:16:38 · 3609 阅读 · 0 评论 -
斐波那契数列的非递归实现
斐波那契数列就是每次最后两个数值相加构成下一个数值,递归定义如下:fibonacci 数列定义:n = 1,2 时,fib(n) = 1n > 2 时,fib(n) = fib(n-2) + fib(n-1)其非递归实现如下:int fabnacci(int n){int a = 1;int b = 1;int c = 1;if (n < 3){return 1;} for (原创 2011-06-08 20:53:00 · 1706 阅读 · 0 评论 -
不使用第三个参数和库函数实现两个数字的交换(异或的妙用)
第一种方法: b = a^b; a = a^b; b = a^b;第二种方法: a=a+b b=a-2*b a=(a+b)/2 b=(a-b)/2第三种方法a=a+b;b=a-b;a=a-b;在前两天带大一教学实习的时候,有一个同学就问我时使用异或操作实现操作交换两个数快还是用第三个变量做快,今天上网无意看到一个面试题也是这样就记录一下,首先异或操作有以下特性:a^a=0原创 2011-10-27 09:01:54 · 2357 阅读 · 0 评论 -
使用异或运算和与运算求取二者最大值和最小值(不使用判断语句求二者最小值)
(y^(x^y)&-(x 如果x 如果x>y;则根据运算规则有,-(x综上所述,所以这个式子返回的是x和y的最小值。经过以上的分析,我们可以很快推导出使用这些位运算计算二者最大值的方法,即(y^(x^y)&(x原创 2012-04-08 22:55:17 · 3241 阅读 · 0 评论 -
取石子儿和拿扑克牌问题
Tang和Jiang非常喜欢玩一种有趣的小游戏:有N个石子,两人轮流从中取出1个, 3个或4个石子,当石子被取空时,游戏结束。最后一个取石子的人获胜,第一次总是Tang取.当然,他们俩都足够聪明,总会采取最优的策略。算法思想(使用递归):当剩余为1、3、4的时候先手者必胜;如果当前数目不是这三个数字,则递归采用去1或3或4,只要其中有一种方式使得剩下的字儿使对方输,则先手者必胜;否则后原创 2012-05-21 10:52:53 · 1841 阅读 · 0 评论 -
赛马问题
一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马。http://hxraid.iteye.com/blog/662643http://www.bcwhy.com/thread-11411-1-1.htmlhttp://blog.youkuaiyun.com/d转载 2012-05-19 16:27:32 · 4489 阅读 · 1 评论 -
两个程序块在不同情况下哪个更快
http://coolshell.cn/articles/4162.html有两个相同功能代码如下,请在在A,B,C是什么的情况下,请给出三个原因case 1比case 2快,还有三个原因case 2会比case 1要执行的快。(不考虑编译器优化)case1:for(i=0;iN;++i){ a; b; c;}case2:for(i=0;i转载 2012-05-19 10:23:05 · 916 阅读 · 0 评论 -
“火柴棍式”程序员面试题
http://coolshell.cn/articles/3961.html有时候,有些面试题是很是无厘头,这不,又有一个,还记得小时候玩的的“火柴棍游戏”吗,就是移动一根火柴棍改变一个图或字的游戏。程序面试居然也可以这么玩,看看下面这个火柴棍式的程序面试题吧。下面是一个C程序,其想要输出20个减号,不过,粗心的程序员把代码写错了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的转载 2012-05-19 10:21:38 · 834 阅读 · 0 评论 -
会编程的煤老板
会编程的煤老板你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?http://blog.youkuaiyun.com/yinghuashihun/article/details/6864转载 2012-05-19 10:19:58 · 2114 阅读 · 0 评论 -
老鼠喝酒问题(二进制编码的妙用)
老鼠喝酒问题一共1000瓶酒,其中一瓶有毒。如果一只老鼠喝了有毒的酒,会在一天之后死亡,那么如果给你一天时间,然你判定哪瓶酒有毒,至少需要几只老鼠?答案是10只。这个需要使用二进制编码来解决,1000瓶酒至少需要10位二进制数来进行编码。然后取十只杯子分别代表这是个二进制数的十个位,分别将1000瓶酒倒入其编码为1的对应的杯子中。取十个老鼠分别喝十个杯子中的酒,一天之后,就可以根据喝那个杯子的原创 2012-03-23 20:48:08 · 4247 阅读 · 0 评论 -
三个水杯盛两个4L水
现在有三个杯子并且没有刻度,分别是8L,5L和3L。如何不借助其他工具使得8L和5L的杯子都盛4L的水。 将8L盛4L比较简单,用5L和3L的制造两个2L就可以了。之后8L的杯子就不能再动了。使用5L和3L的制造4L的关键就是制造出一个1L的就可以了,1=5-4,但是这样不可行,要制造的就是4,1=3-2=6-5;这样问题就迎刃而解了,可以在3L的杯子中剩下1L倒入5L的之后再倒入4L就可原创 2012-05-30 09:35:21 · 2538 阅读 · 0 评论 -
小明一家过河
有一家人想要渡河,小明过河需要1秒,爸爸需要3秒,妈妈需要6秒,奶奶需要8秒,爷爷需要12秒,船一次只能承载2人,过河时时间算做是用时做多的那个人,渡河过程中规定时30秒,不能多也不能少这家人应怎样渡 小明和爸爸先过去3秒,小明回来1秒,爷爷奶奶一起过去12秒,爸爸回来3秒,小明和妈妈过去6秒,小明回来1秒,小明和爸爸过去3秒。 3+1+12+3+6+1+3=29秒 还多一秒。后来想想原创 2012-05-30 09:28:17 · 6136 阅读 · 1 评论 -
母牛产牛问题
http://topic.youkuaiyun.com/u/20120828/12/8336bd43-4a3c-4b77-bf17-2fa854c3702e.html一头母牛从出生后,每两年可以生下一头母牛,即在第二年和第四年分别可产下一头母牛,出生后第五年将会死去。假设农场现有一头母牛,N年后农场的母牛数目是多少,编写程序实现用五个数字或数组来记录当前岁数的牛的个数,每增长一年的时候都会年长一岁的个转载 2012-08-29 15:40:09 · 2359 阅读 · 0 评论