题目:数组
如今有一条公路,起点是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