【算法】js实现最短时间走完不同速度的路程
题目:
现在有一条公路,起点是0公里,终点是100公里。这条公路被划分为N段,每一段有不同的限速。现在他们从A公里处开始,到B公里处结束。请帮他们计算在不超过限速的情况下,最少需要多少时间完成这段路程。
输入:
1、第一行为公路划分的段数N
2、接下来N行,每行三个正整数,分别是起始点,终止点(前后两段一定保证是连续的),和限速值(单位:公里/小时)
3、紧接是要计算的起始点A,和终止点B
输出:
1、输出为一行,即从A到B需要的最少时间(单位:小时),精确到小数点后两位
Sample Input:
6
0 10 10
10 30 20
30 40 20
40 60 5
60 80 5
80 100 5
0 20
Sample Output:
1.50
Sample Input:
4
0 30 20
30 40 10
40 80 30
80 100 10
0 100
Sample Output:
5.83
代码如下:
var n = 6;
// 读取输入的行数
var arr = [
[0, 10, 10],
[10, 30, 20],
[30, 40, 20],
[40, 60, 5],
[60, 80, 5],
[80, 100, 5]
];
//所有的距离分段和对应的速度
var temp = [0, 20]; //起始位置
var time = 0; //所要计算的时间
var index = 0; //临时变量
var num = 0; //临时变量
var k;
for(var i = 0; i < n; i++) {
//遍历数组
if(temp[0] >= arr[i][0] && temp[0] <= arr[i][1]) {
//找起点所在的分段,计算起始段内需要的时间
index = i;
time += (arr[i][1] - temp[0]) / arr[i][2];
}
//找终点所在的分段 , 计算终止段内需要的时间
if(temp[1] >= arr[i][0] && temp[1] <= arr[i][1] && (temp[1] != arr[i][0])) {
num = i;
time += (temp[1]- arr[i][0]) / arr[i][2];
} }
//计算起止位置之间的所有时间,并累加
k = index + 1;
while(k < num) {
time += (arr[k][1] - arr[k][0]) / arr[k][2];
k++;
}
//保留了两位小数
console.log(time.toFixed(2));
CSDN博客地址:http://my.csdn.net/Auyuer
【算法】js实现最短时间走完不同速度的路程的更多相关文章
- js实现最短时间走完不同速度的路程
题目: 现在有一条公路,起点是0公里,终点是100公里.这条公路被划分为N段,每一段有不同的限速.现在他们从A公里处开始,到B公里处结束.请帮他们计算在不超过限速的情况下,最少需要多少时间完成这段路程 ...
- 【js】Leetcode每日一题-完成所有工作的最短时间
[js]Leetcode每日一题-完成所有工作的最短时间 [题目描述] 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有工 ...
- 八大排序算法JS及PHP代码实现
从学习数据结构开始就接触各种算法基础,但是自从应付完考试之后就再也没有练习过,当在开发的时候也是什么时候使用什么时候去查一下,现在在学习JavaScript,趁这个时间再把各种基础算法整理一遍,分别以 ...
- 动态规划之DP中判断是否到达某一状态(最短时间是什么)?
codevs1684 垃圾陷阱 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 卡门——农夫约翰极其珍视的一条Holste ...
- Js获取当前日期时间及其它操作
Js获取当前日期时间及其它操作var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份 ...
- JS Date当前时间:获取日期时间方法在各浏览器中的差异
转自:http://www.feiesoft.com/00047/<script type="text/javascript"> // JS Date当前时间获取方法在 ...
- js获取当前时间显示在页面上
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Js多国时间动态更新
Js多国时间动态更新 点击下载
- js生成当前时间
js生成当前时间 var today=new Date(); function itArray(){ this.length=itArray.arguments.length for(var i=0; ...
随机推荐
- python3 之metaclass
如果希望创建某一批类全部具有某种特征,则可通过 metaclass 来实现.使用 metaclass 可以在创建类时动态修改类定义. 为了使用 metaclass 动态修改类定义,程序需要先定义 me ...
- 微信小程序“一劳永逸”的接口封装
前言 最近都在研究小程序了,我可以的! 需求 之前都是用vue来开发项目的,接口模块我特意封装了一下.感觉也可以记录一下 小程序的接口虽说简单,但是重复调用那么多,显得不专业(一本正经的胡说八道) 还 ...
- Wrapper: Error - Unable to execute Java command
在64位的系统下 将短信程序运行于服务中,出现以下错误: Error: [size=14px; line-height: 26px;]FATAL | wrapper | 2012/06/18 17 ...
- VS2008下LibTomCrypt 1.17的编译和使用《转》
文章出处:http://blog.csdn.net/delphiwcdj/article/details/6298820 具体步骤如下: (1) 下载tomcrypt tomcrypt 1.17 VS ...
- EnvironmentError: mysql_config not found
Collecting MySQL-python==1.2.5 (from -r requirementsNoGit.txt (line 9)) Using cached https://files.p ...
- (信贷风控九)行为评分卡模型python实现
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- ratingBar 星级评分条
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- ECMAScript 6.0基础入门教程
ECMAScript 6.0基础入门教程 转:https://blog.csdn.net/hexinyu_1022/article/details/80778727 https://blog.csdn ...
- append()、appendChild() 和 innerHTML 的区别
概念和区别:append() 可以同时传入多个节点或字符串,没有返回值: 据说 append 还是试用期的方法,有兼容问题,(但我用了暂时火狐,谷歌,iE都能使用). https://develope ...
- 算法习题---5-7打印队列(UVa12100)
一:题目 有一个打印机,有一些任务在排着队打印,每个任务都有优先级.打印时,每次取出队列第一个任务,如果它的优先级不是当前队列中最高的,就会被放到队尾,否则就打印出来.输出初始队列的第m个任务的打印时 ...