一个DP入门题目

/*
假设某条街上每一公里就有一个公共汽车站,并且乘车费用如下表:
公里数 1 2 3 4 5 6 7 8 9 10
费用 12 21 31 40 49 58 69 79 90 101
而任意一辆汽车从不行驶超过10公里。某人想行驶n公里,假设他可
以任意次换车,请你帮他找到一种乘车方案,使得总费用最小
注意:10公里的费用比1公里小的情况是允许的。
*/题目:假设某条街上每一公里就有一个公共汽车站,并且乘车费用如下表:
公里数   1    2    3    4    5    6    7    8    9    10
费用    12  21  31  40  49  58  69  79  90  101
而任意一辆汽车从不行驶超过10公里。某人想行驶n公里,假设他可
以任意次换车,请你帮他找到一种乘车方案,使得总费用最小
注意:10公里的费用比1公里小的情况是允许的。

 

恩,有经验的人第一眼就看出来要用动态规划.....但开始的时候本人不是那种有经验的人.....所以走了很多弯路.在这里把之前错误的想法一起说出来,也算是逐步的见证自己一点一点的提高吧.

 

先说一下最原始的时候的想法..现在想起来真是幼稚到可怕. 最初的时候我是这么考虑的,嗯,十公里....假设我们要乘坐a公里,a / b = c ...... e

意思是我要乘a公里,可以分成乘坐c个b公里,再加上一个e公里. 然后b的取值是1~10 e是0~9 然后分别计算出代价,再比较得出最小值...

这里得到的值实际上和预期差很多,原因在于,这样做实际上相当于只考虑了转车的次数是1次的情况.而实际上转车的次数可能不只是1

 

后来同学想了另外一种方法,就是每次都乘坐性价比最高的车次.这样的做法实际上就是贪心.是局部最优解.....那时候没有意识到每一部分都是局部最优,但是组合起来却不一定是整体最优.......

 

再后来,晚上通宵看书的时候恰好看了动态规划.....猛然发现,这题就应该用动态规划来做.......唉,真是道路曲折啊

 

DP 有四个要素,第一划分阶段,第二是状态,第三是决策,第四是状态转移方程.

在这一题看来,走多少公里就是一个阶段, 走1公里是一个阶段,走两公里是一个阶段,三公里是一个阶段......

而决策便是,下一个阶段我应该怎么走(在这里就是要走费用最小的)

状态,在这里就是每一阶段的最优解

状态转移方程就是,在我们的决策下本阶段变化到下一个阶段的时候,当前状态与下一个状态的变化关系.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值