思维灵活性的小例子

自己逻辑能力还可以,思维的灵活性和创造性不足。记录几个小例子,算是对思维灵活性的一点锻炼。[@more@]

1. 一台机器只有整数,只能执行 +1, 循环,赋值 指令,如何实现 加法,减法,乘法,除法。
百度的笔试题,加法大家都会,乘法在加法的基础上好做,除法在减法基础上也可以实现。可是如何实现减法,没有比较操作。

2. 两个单链表有交叉,求交叉结点
如果两个单链表等长,很好做,从头结点,顺序比较,每个都后移一个结点,知道两个相等结点即可。
如果不等长呢?如何比较?思维向着这个方向去了,O(n*m)的循环?

3. 过桥的问题,桥尾的收费员睡5分钟,醒5分钟,过桥要10分钟,钱不够如何过桥。

4. 烧绳子计时的问题,绳子不均匀,烧完要1小时,如何计半小时。

5. 25匹马在5赛道的场上,用最少场次找出前1,2,3名的马。

6. 两个鸡蛋在一百层的楼上找出,使鸡蛋摔破的最低层。最多多少次。
5.6 两个问题不算思维灵活性,不是那种简单变通就可以解决的,有点创新+逻辑。

答案:
1. 一个简单的逆向思维的问题,a+1=b ,那么a=b-1
fun(a-b)
{
n=a;
for(b次)
{
t=0;
for(n次)
{
p=t;
t=t+1;
}
//这里p=n-1
n=p;
}
return p;
}
先实现 a-1 再循环b 次。
问题,只知道往+的方向想,但是没有比较指令。

2. 其实先找出两个链表长度,长的链表先走几个结点,从等长地方开始比较,化成等长问题了。

3. 走一半,待收费员快醒,转身往回走。被收费员赶到桥另一端。这个算是挖掘一些隐藏逻辑。不完全是灵活变通。

4. 烧绳计时的问题,从两端同时点燃。一个老套的笔试题。也不懂变通。还有烧出45分钟,1小时15分钟,一根绳子两头点燃,另一根一头点燃,第一根绳子烧完后点燃另一端等等。

5. 分5组先比。然后找各组第3名开始比一轮(记为第2轮)。不知道自己为什么要找第3名,其实第1名就可以了,然后找第2轮最优所在组2,3,次优马所在组2,第2轮第3名的马,PK一次就可以了。

6. 傻乎乎的居然2层一试,选49次。同学还列出了方程,第一次从0开始往上数n层,扔鸡蛋,如果破,再从第0层一层层试另一个鸡蛋。最多n次。如果不破,从n层往上上n-1层,试第一个鸡蛋,因为已经用了1次,类似上面做法,最多经过n次也能试出来。依次类推,直到再网上到n-(n-1) =1 到了100层。也就是 1+2+...+n=100 n(n+1)/2>=100 n=14.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/38085/viewspace-1013202/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/38085/viewspace-1013202/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值