您的位置:首页 > Web前端 > JavaScript

js实现最短时间走完不同速度的路程

2017-12-31 18:21 351 查看
题目:

现在有一条公路,起点是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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: