作者LPH66 (IWH68S0XZ8M89)
看板puzzle
标题Re: [问题] 道路速限/线
时间Sat Nov 24 14:57:57 2007
※ 引述《yjd (le petit prince)》之铭言:
: 现在有一地区道路规划如下
: (1,1)
: ↘10 20 30 40 50 60 (单位:km/hr)
: 10 ┌──┬──┬──┬──┬──┐
: │ │ │ │ │ │↖ (6,1) 所有道路以棋盘格方式排列
: │ │ │ │ │ │
: 20 ├──┼──┼──┼──┼──┤ 行走方向不限
: │ │ │ │ │ │
: │ │ │ │ │ │ (东西 南北 双向皆可通)
: 30 ├──┼──┼──┼──┼──┤
: │ │ │ │ │ │↖ (6,3) 每条道路有其速限
: │ │ │ │ │ │
: 40 ├──┼──┼──┼──┼──┤ 标示在最上端 (纵向道路速度)
: │ │ │ │ │ │ 及最左端 (横向道路速度)
: │ │ │ │ │ │
: 50 ├──┼──┼──┼──┼──┤ e.g.从(1,1)→(3,1)→(3,2)
: │ │ │ │ │ │ ↑ ↑
: │ │ │ │ │ │ 行车速度必须从10km/hr→30km/hr
: 60 └──┴──┴──┴──┴──┘
: ↗ ├──┤ ↗ (假设速度可在瞬间转换)
: (1,6) 10km (6,6)
: 每条道路皆为10公里
: 请问:
: (i) 现在要从(1,1)走到(6,3),所需最短时间为多少? 路径要如何走?
: (ii)如果现在想将所有交叉路口都走过并且只能走过一次(道路不必全走过)
: 所需最短时间又为多少? 路径要如何安排? (以(1,1)为起点)
(1)的部份颇类似演算法里的Shortest-path问题
於是我利用这个方法来做 得到的答案是200分钟:
[ 0]→[ 60]→[ 120] [ 165] [ 192] [ 220]
↓ ↓ ↑ ↑ ↑
[ 60]→[ 90]→[ 120]→[ 150]→[ 180]→[ 210]
↓ ↓ ↓ ↑
[ 120] [ 120]→[ 140]→[ 160]→[ 180]→
[ 200]
↓ ↓ ↓
[ 165]←[ 150] [ 160]→[ 175]→[ 190]→[ 205]
↓ ↓ ↓ ↓
[ 192]←[ 180] [ 180] [ 190]→[ 202]→[ 214]
↓ ↓ ↓ ↓ ↓
[ 220]←[ 210]←[ 200] [ 205] [ 214]→[ 224]
箭头代表走法
(2)
我目前只能想到这种走法:
1→2 9→10 25→26
↓ ↑ ↓ ↑ ↓
4←3 8 11 24 27
↓ ↑ ↓ ↑ ↓
5→6→7 12 23 28
↓ ↑ ↓
16←15←14←13 22 29
↓ ↑ ↓
17→18→19→20→21 30
↓
36←35←34←33←32←31
费时60*5+30*2+20*4+15*6+12*8+10*10=726分钟
基本想法是尽量不要用到60分钟(速度10km/hr)的路
然後一圈圈往外 尽量利用目前能用的最快路线
不要回头走 (会用到慢速度的路浪费时间)
至於还有没有更快的就要再找找了
--
[LPH] Oops, your OOP's a problem? 说:
你现在还是看不到狗?
************* 说:
看得到 只是 他们不会跑 就一直呆呆在那边 一直在起点
[LPH] Oops, your OOP's a problem? 说:
你要按"ㄅㄧㄤˋ"它们才会跑啊@@"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.91.5
1F:推 vinnce:利害!!应该对喔!! 11/24 15:08
2F:推 yjd:完全正确!!! 真是太强了!!! 11/24 17:29