題目:數組
如今有一條公路,起點是0千米,終點是100千米。這條公路被劃分爲N段,每一段有不一樣的限速。如今他們從A千米處開始,到B千米處結束。請幫他們計算在不超過限速的狀況下,最少須要多少時間完成這段路程。spa
輸入:.net
1、第一行爲公路劃分的段數Ncode
2、接下來N行,每行三個正整數,分別是起始點,終止點(先後兩段必定保證是連續的),和限速值(單位:千米/小時)blog
3、緊接是要計算的起始點A,和終止點B博客
輸出:console
1、輸出爲一行,即從A到B須要的最少時間(單位:小時),精確到小數點後兩位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