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

相關文章
相關標籤/搜索