练习题12:酒店价格
题目描述
酒店房间的价格录入是通过时间段来录入的,比如10月1日至10月7日800元,10月8日至10月20日500元,请实现以下函数int[][] merge(int[][] dateRangePrices),输入是某个酒店多个日期段的价格,每个日期段(终止日期大于等于起始期)和对应的价格使用长度为3的数组来表示,比如[0, 19, 300], [10, 40, 250]分别表示从某天开始第1天到第20天价格都是300,第11天到第41天价格都是250,这些日期端有可能重复,重复的日期的价格以后面的为准, 请以以下规则合并并输出合并结果:
1.相邻两天的价格如果相同,那么这两个日期段应该合并
2.合并的结果应该以起始日期从小到大排序
输入描述:
输入数据包括多行,如样例输入所示。
输出描述:
输出数据为一行,如样例输出所示
Java解法:
import java.util.*;
public class test02 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int start, end, price;
int minDay = 0;
int maxDay = 0;
int[] money = new int[10000];
while(input.hasNext()) {
start = input.nextInt();
end = input.nextInt();
price = input.nextInt();
for(int i = start; i <= end; i++) {
money[i] = price;
}
if(minDay > start)
minDay = start;
if(maxDay < end)
maxDay = end;
}
int min_id;
for(int i = minDay; i <= maxDay; i++) {
min_id = i;
if(money[i] == 0)
continue;
while(money[i] == money[i + 1] && i + 1 <= maxDay)
i++;
System.out.print("[" + min_id + "," + i + "," + money[i] + "]");
if(i != maxDay)
System.out.print(",");
}
}
}