题目:

转载一位大牛写的代码。

思路及AC代码:

/*

这道题目是DP中多阶段决策的典型例题

我们将起点和终点划分到N个加电站中去

这样一共有N+2点,用DP[i]表示到第i个加电站的最小耗费时间

那么在求DP[i]的时候,DP[0]...DP[i-1]已经求得

让j从0遍历到i-1,每一个j表示最后一次充电到i点

那么状态转移方程为

DP[i] = min(DP[j] + t(j, i)) //t(j, i)表示从j充完电一直到i点(中途没有充过电)

*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

const int MAX=150;

const double INF=0xfffff;//0x代表十六进制

double DP[MAX];//DP[i]表示到第i个加电站的最小耗费时间

int s[MAX];//s[i]表示到第i个加电站距离起点的距离

using namespace std;

double Min(double x,double y)//判断大小

{

return x>y?y:x;

}

int main()

{

double L;

int n,i,j;

double electricity_l,electricity_t;

double vt_rabbit,vt_ele,vt_none;

double len,sum,Time;

while(cin>>L)//输入跑道长度

{

cin>>n>>electricity_l>>electricity_t;//输入加电站的个数、电动车最大行驶距离、电动车的充电时间

cin>>vt_rabbit>>vt_ele>>vt_none;//输入兔子、电动车、乌龟用脚踏的各个速度

for(i=1;i<=n;i++)//输入各个加电站距离起点的位置

cin>>s[i];

s[n+1]=L;//把第n+1个加电站设为终点,长度为L

s[0]=0;//把第0个加电站设为起点,长度为0

DP[0]=0;//起点到起点最小耗费时间为0

for(i=1;i<=n+1;i++)

{

DP[i]=INF;//因为到第i个加电站最小耗费时间未知所以赋值无穷大

for(j=0;j

{

len=s[i]-s[j];//从第j个加电站到第i个加电站的距离

if(len>electricity_l)//如果该距离大于电动车能行驶的最大距离

Time=electricity_l/vt_ele+(len-electricity_l)/vt_none;//把电动车行驶的时间加上乌龟用脚踏的时间

else//如果小于

Time=len/vt_ele;//直接加上这段距离除于电动车的速度所得的时间

Time+=DP[j];//之后加上到第j个加电站的最优时间

if(j>0)//这里判断j>0是因为如果j==0的话,即表明从起点出发,因为起点已经充满电了所以不需要加上电动车的充电时间

{

Time+=electricity_t;//如果j>0加上电动车的充电时间

}

DP[i]=Min(DP[i],Time);//每次挑出到第i个加电站的最优时间

}

}

if(DP[n+1]

cout<

else

cout<

}

return 0;

}

龟兔赛跑编程c语言蓝桥,龟兔赛跑相关推荐

  1. PTA 基础编程题目集 7-22 龟兔赛跑 C语言

    PTA 基础编程题目集 7-22 龟兔赛跑 C语言 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于 ...

  2. 谷歌宣布推出Dart编程新语言

    北京时间9月9日上午消息,据著名科技做网站ExtremeTech的报道,谷歌编程新语言Dart逐渐浮出水面,它是一种"结构化的Web编程"语言.早在几天前谷歌就已着手注册了一系列与 ...

  3. Python 或将成为法国高中的官方编程教学语言

    百度智能云 云生态狂欢季 热门云产品1折起>>>   Python 或将成为法国高中的官方编程教学语言,这将带来几十万甚至几百万的新用户.此消息来自 Nina ,她是微软云开发的倡导 ...

  4. 嵌入式编程C语言提高代码效率的14种方法

    嵌入式编程C语言提高代码效率的14种方法 1.在可能的情况下使用typedef替代define.当然有时候你无法避免define,但是typedef更好. typedef int* INT_PTR; ...

  5. Python,美国顶尖大学里最受欢迎的编程入门语言

    摘要 截止到目前,Python 已经成为目前美国顶尖大学里最受欢迎的计算机编程入门语言.计算机排名前 10 的学校里,有 8 所学校(80%)使用 Python 作为编程入门语言.在计算机排名前 39 ...

  6. c语言和plc编程,PLC编程C语言.ppt

    PLC编程C语言 华中数控培训讲义 · PLC编程 C语言编程 PLC控制的范围 数控机床所受到的控制可分为两类:数字控制和顺序控制. 数字控制主要指对各进给轴进行精确的位置控制,包括:轴移 动距离. ...

  7. 主要编程教学语言的讨论

    转载自:http://blog.csdn.net/myan/article/details/2033386 CSDN首页推荐了一篇文章,说两位退休的美国大学教授上书反对将Java作为编程教学语言,对此 ...

  8. 好好学习 天天编程—C语言之我的第一个hello world(二)

    好好学习 天天编程-C语言之我的第一个hello world(二)

  9. 好好学习 天天编程—C语言之环境搭建(一)

    好好学习 天天编程-C语言之环境搭建(一) 一.安装Visual Studio 2010及以上版本 二.搭建环境 三.编写代码 四.运行代码 Ctrl+F5 或者Ctrl+Fn+F5 如果界面不出来这 ...

最新文章

  1. Django: jQuery中的function学习(一)
  2. php 基础函数写法,字符串,常用函数
  3. VC++取MD5算法记录下以后用得到(转)
  4. [ZJOI2007] 时态同步
  5. payara 创建 集群_在Payara Server和GlassFish中配置密码
  6. 第二阶段:4.商业需求文档MRD:5.PRD-原型图
  7. 软件开发之文档的重要性
  8. Java设计模式补充:回调模式、事件监听器模式、观察者模式(转)
  9. Ubuntu18.04下的模拟神器RetroArch
  10. JAVA Swing万年历
  11. 关于微信刷票的Python源码
  12. php必应壁纸 分辨率,必应壁纸php获取接口
  13. 测试工程师的福利!各远程移动测试平台对比分析
  14. Latex学习笔记:三线表与表线控制
  15. 基于junit4的关于个人所得税计算的等价类与边界值_关于量子力学的基本原理
  16. php修改根目录,phpStudy如何修改端口或WWW目录(网站根目录)
  17. react native 出现程序包com.facebook.react不存在
  18. 基于Java的高校实验室管理系统的设计与实现
  19. FreeSWITCH mod_cti模块 结合 fail2ban 实现封堵恶意IP(SIP安全,防攻击)
  20. 基于JQData的有效前沿及投资组合优化

热门文章

  1. 头的各个部位示意图_牛肉的部位图解与做法+牛肉各个部位分布图及质地简介...
  2. Maven入门教程(十七)-Maven多Moudle项目创建
  3. cnblogs!I'm comeing!
  4. 分布式锁的一些细节问题,值得收藏
  5. Win11输入法的选字框不见了怎么办?
  6. Tik Tok跨境:不会英语可以做TikTok吗?
  7. 计算机网络实训报告总结,学习计算机网络的实训总结
  8. win10 锁屏时间无法设置 解决方法
  9. 国自然结题规定:经费结余50%以上或将无法结题
  10. SpringBoot FlyWay报错:Detected applied migration not resolved locally: