zoukankan      html  css  js  c++  java
  • 面试题:蚂蚁爬杆

    Question有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。

    最小时间肯定大家都很容易就想到了, 就是蚂蚁们分别向左或向右走, 其中在11厘米处的蚂蚁应该向左走比较近, 所以最小时间就是中间的蚂蚁向0处走出杆的时间, 也就是11秒.

    求最大时间呢? 穷举所有情况, 然后编程模拟么? 虽然一共只有2的5次方也就是32种情况, 编程模拟也不是很麻烦~ 但其实有个更简单的方法完全不需要编程就可以得出:
    假设蚂蚁走路能够穿人(哦不, 是穿蚁), 当它们碰头时虽然题目里说是分别掉头, 但我们可以看成它们只是穿过了对方的身体而继续往前走, 要求最大时间也就是找到那个走出杆最久的蚂蚁, 很显然是3厘米的蚂蚁往右走(也就是木杆27厘米处), 时间为24秒.
  • 相关阅读:
    十二经络容易堵塞穴位
    考研英语词汇-乱序便携版-遗忘曲线
    分享一个硬核理工类科普节目:回到2049(12月17号取消置顶)
    191129
    191130
    191128
    191127
    191126
    191125
    微信公众号自定义菜单中添加图标(转)
  • 原文地址:https://www.cnblogs.com/Dah/p/566140.html
Copyright © 2011-2022 走看看