- 主题:一道谷歌面试题
所以搞了兩個序列,一個射擊座標會被螞蟻追上,一個射擊座標可以追上螞蟻
【 在 isk (朱迪) 的大作中提到: 】
: 不懂你这个算法。
: 蚂蚁位置没办法知道,爬过了也不会留下痕迹。
: 用概率算的话,是零。
: ...................
--
FROM 125.120.162.*
牛逼!
【 在 dilemma 的大作中提到: 】
: 第2n次,打n
: 第2n+1次,打3n
:
--
FROM 223.71.139.*
放在二维坐标轴上,蚂蚁的轨迹实际上是一根斜率为1 ,截距为任意整数的射线,题目的要求可以理解为,我们需要构建一个函数,使其与蚂蚁的函数在某个整数位上相交。由于蚂蚁初始点任意,所以无论怎么选取初始点,都会有两种情况:初始蚂蚁在左面,和初始蚂蚁在右面。因此需要构筑一个区间,区间上沿斜率大于一,区间下沿斜率小于一,这样,不管蚂蚁在左还是在右,都可以相交。此外,函数构造要保证不会正好错过交点。
设蚂蚁初始点为A,步数为X,则蚂蚁函数为Y=A+X;
构建一个函数,上沿为:当X为奇数,Y=(3X+1)/2,斜率大于1;
下沿为:当X为偶数,Y=X/2,斜率小于1。
当在奇数点相交时,A+X=(3X+1)/2
A=(X+1)/2,可为任意正整数
当在偶数点相交时,A+X=X/2
A=-X/2,可为任意非正整数
【 在 stub 的大作中提到: 】
: 有一个无限长的整数刻度的坐标轴,有一只蚂蚁在某一个整数刻度上,但是具体位置未知,现在蚂蚁每秒钟都会向正方向前进一格。你有一把手枪,每秒钟你能向坐标轴的某个刻度开一枪,之后只能知道打中还是没打中,请你设计一种开枪的策略,保证最终一定能打中这只蚂蚁。
--
FROM 117.65.189.*
射程是无限?
【 在 siegfried415 的大作中提到: 】
: 最多两枪,一定命中,你这是最优解。。。
:
--
FROM 116.237.112.*
题目中没提,就当是无限,如果面试官说射程有限,那再给出有限解呗。。。
【 在 hpskills 的大作中提到: 】
: 射程是无限?
--
FROM 113.232.131.*
相对运动,相当于蚂蚁不动,任意找两个点,从大的点往左、从小的点往右交替打
设整数 a, b,a >= b,蚂蚁不动时:
第 2n 次, 打 a-n
第 2n+1 次,打 b+n
加上蚂蚁移动速度:
第 2n 次,打 a-n+2n = a +n
第 2n+1 次,打 b+n+2n+1 = b +3n +1
【 在 stub 的大作中提到: 】
: 有一个无限长的整数刻度的坐标轴,有一只蚂蚁在某一个整数刻度上,但是具体位置未知,现在蚂蚁每秒钟都会向正方向前进一格。你有一把手枪,每秒钟你能向坐标轴的某个刻度开一枪,之后只能知道打中还是没打中,请你设计一种开枪的策略,保证最终一定能打中这只蚂蚁。
--
修改:zez0 FROM 112.65.11.*
FROM 112.65.11.*
从坐标0开始交替按等比数列打枪(等待)和右移(追赶)
时刻 坐标 打枪 右移
0 0 1 2
1 2 4 8
5 10 16 32
21 42 64 128
85 170 256 512
....
每一轮的第一枪,(坐标-时刻)是0,1,5,21,85...,是递增的,总能追上右边的蚂蚁
每一轮最后一枪,(坐标-时刻)-1,-3,-11,-43,-171...,是递减的,最后总能被左边蚂蚁追上
【 在 stub 的大作中提到: 】
【 在 stub 的大作中提到: 】
: 有一个无限长的整数刻度的坐标轴,有一只蚂蚁在某一个整数刻度上,但是具体位置未知,现在蚂蚁每秒钟都会向正方向前进一格。你有一把手枪,每秒钟你能向坐标轴的某个刻度开一枪,之后只能知道打中还是没打中,请你设计一种开枪的策略,保证最终一定能打中这只蚂蚁。
--
修改:ycwu FROM 183.194.168.*
FROM 183.194.168.*
连这种帖子都敢点开?我飘了
--
FROM 59.109.144.*
你再想想
【 在 appletree 的大作中提到: 】
: 如果是要求有限步,那是不可能实现的。
: 因为每一枪只能排除掉一个初始位置,然而蚂蚁的初始位置是无限的。
:
--
FROM 183.95.135.*
没理解n的意思。
【 在 anetwork 的大作中提到: 】
: 假设n从0算起,蚂蚁如果初始在1正好被跳过了,需要开始在0点连打2枪补救这情况
--
FROM 221.218.203.*