js实现最短期走完不一样速度的路程

题目:数组

如今有一条公路,起点是0千米,终点是100千米。这条公路被划分为N段,每一段有不一样的限速。如今他们从A千米处开始,到B千米处结束。请帮他们计算在不超过限速的状况下,最少须要多少时间完成这段路程。spa

 

输入:.net

1、第一行为公路划分的段数Ncode

2、接下来N行,每行三个正整数,分别是起始点,终止点(先后两段必定保证是连续的),和限速值(单位:千米/小时)blog

3、紧接是要计算的起始点A,和终止点B博客

 

输出:console

1、输出为一行,即从AB须要的最少时间(单位:小时),精确到小数点后两位class

 

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

相关文章
相关标签/搜索