LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: quanliking

趣味编程:bicycle problem

[复制链接]
发表于 2003-10-3 13:08:08 | 显示全部楼层
保持关注.
发表于 2003-10-4 14:14:48 | 显示全部楼层
三个东西分别叫 B(Boy),G(Girl), D(Dog)

B: 先骑车到5.4公里处,然后走到终点
   共花 5.4/12+4.6/2 = 0.45+2.3 = 2.75(h)
D: 先跑到5.4公里处,再骑车返回4.6公里处,再跑回终点
   共花 5.4/4 + 0.8/16 + 5.4/4 = 1.35 + 0.05 + 1.35 = 2.75(h)
G: 先走到4.6公里处,再骑车至终点
   共花 4.6/2 + 5.4/12 = 2.3 + 0.45 = 2.75(h)

答案2.75h

比float的答案(5/2+5/12=2.92h)小

不知道大家的答案是多少
 楼主| 发表于 2003-10-4 14:39:05 | 显示全部楼层
Well done! That's right answer.
Now come on ! Tell us how u guy got the exact solution.
发表于 2003-10-4 14:50:27 | 显示全部楼层
看了前面的讨论后我觉得应该有两个停车点,
写了方程式后觉得两个停车点是对称的,于是就只有一个未知数

我假定,两个停车点位置分别是x, 10-x
那么
B的时间为: (10-x)/12+x/2
D的时间为: (10-x)/4 + (10-2x)/16 + (10-x)/4
G的时间为: max(x/2, (10-x)/4+(10-2x)/16) + (10-x)/12

然后用openoffice的oocalc求最小值:

最左边一列是x,从0.0到5.0,间隔0.1
二三四列分别是B,D,G的时间,
第五列是max(B,D,G)

然后一做图就看出来了

然后再在4.6附近取两个点(4.599, 4.601)确认一下就行了

就是这样
发表于 2003-10-6 18:59:20 | 显示全部楼层
应该是不只两个
当然最小是两个
可以假设有两种人
M(人) 与D(狗)

因为狗速度快 所以第一次是人使用自行车
第二次 也因为人速度慢 还是人使用自行车
最后的关键是要不要有第三次或是要跑几次
这时就找出他们的规律然后写个循环
发表于 2003-10-6 19:00:32 | 显示全部楼层
还有就是可以骑车出去
然后骑回来

可能的就是人骑车
狗骑回来

这样速度会更快
发表于 2003-10-7 17:42:09 | 显示全部楼层
最后是三个同时到达终点
开始时是人先骑
后面是狗回来接咀个人

最后是同时到达

算法是这样
发表于 2003-10-12 23:55:24 | 显示全部楼层
放下了

大家有空再研究吧
发表于 2003-10-16 18:00:34 | 显示全部楼层

solution

I think this is a easy job. It is reasonable to assume boy and girl ride on the bike at the same long time x because they have the same speed. the dog ride on the bike y. and all three arrives at the same time. So, we can get the following equations:

boy:   12x + 2x + 2y =10
girl: 2x + 12x + 2y = 10
dog: 4x + 4x +16y = 10

total time: x+x+y

(if dog or human runs back, it means wasting time!)

Answer is: 1.635 Hours
发表于 2003-10-16 20:36:49 | 显示全部楼层
我觉得dog runback的话可能更合理

因为man的速度慢

dog无论怎样(骑车或是跑步)速度都快

它回来可以节约另一个的时间

所以最后就是列方程了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表