算法设计-倒推法
来源:互联网 发布:java shell 编辑:程序博客网 时间:2024/06/06 09:51
倒推法,在正向思考策略无从下手时,可以逆向思考。
如下题
吉普车穿越1000KM沙漠,吉普车总装油量为500加仑,耗油率为1加仑/KM。必须用这个车在沙漠中建立临时油库。若吉普车用最少油穿越沙漠,应该在哪些地方建立油库,以及各处存储的油量。
我的思考:用递归解,用每个临时油库的油量和距离作为参数进行递归。
倒推递归
条件一:耗油最少即->每次出去到目的地恰好耗完所有的油即(500加仑)
条件二:每次最多带500加仑->就是每次最多走500KM(来回一共!!)
double dis //上一个油库距离下一个距离KM
double oil //存储的油 加仑
终点:dis =1000 oil = 0
oil -> 去 500KM 500加仑
下一个油库:dis = 500 oil = 500
这个油库要500加仑 必须要的
oil -> 一趟 + 去 1000加仑
下一个油库:oil = 1000 dis = 500/3
这个油库要1000加仑 必须要的
oil->2趟+去 1500加仑
……
….
再将每个油库的距离累加起来大于等于1000KM 就完成
下面上代码:
main(){ int dis,k,oil,k; dis = 500; k = 1; oil = 500; do { print("storepoint",k,"distance",1000-dis,"oilquantity",oil); k = k + 1; dis = dis + 500/(2*k+1); oil = 500*k; }while(dis<1000); oil = 500*(k-1)+(1000-dis)*(2*k-1); print("storepoint",k,"distance",0,"oilquantity",oil);}
阅读全文
0 0
- 算法设计-倒推法
- 倒推法
- 算法设计与分析——第三篇,倒推蛮力什么的
- 猴子吃桃-倒推法
- 实用算法的分析与程序设计——递推法(倒推法)
- 猴子吃桃子问题 -- 递推算法(倒推)
- 日期倒推
- 倒推法解决“四人玩火柴棍游戏,每一次都是三个人赢,一个人输”问题
- poj2828~线段树倒推
- UESTC 759 倒推数组
- hdu5596GTW likes gt+倒推
- 倒推 hdu5596 GTW likes gt
- 线段树—倒推优化
- 分治法 - 合并算法设计
- 算法设计之回溯法
- 设计排序算法法问题
- 算法设计之分治法
- 设计算法之分治法
- Kettle入门——Kettle基本概念
- Java面试(转)
- 打印当前时间。学习使用Date类和Calendar类。(教材P194页)
- 26. Remove Duplicates from Sorted Array
- 计算机视觉
- 算法设计-倒推法
- 剑指offer_数组---构建乘积数组
- IDE 10 月指数榜:Eclipse 反超 Visual Studio
- linux文件与目录的默认权限和隐藏权限。
- 将Java程序打包成jar并执行
- 第五单元笔记整理
- Kettle进阶——Kitchen源码阅读
- frame-同一页面之间的框架操作
- Gray (dp 或 乱搞)