题目描述
小明正在准备程序设计大赛,现在老师交给他了这样一个任务:n
个气球排成一排,从左到右依次编号为 1,2,3....n
。每次给定 2
个整数 a,b
,小明便开始从气球 a
开始到气球 b
依次给每个气球涂一次颜色。但是 n
次以后小明已经忘记了第 I
个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?
输入输出格式
输入格式
第一行有一个整数 n
,表示小明涂气球的次数和气球总数; 接下来输入 n
行,每行包括 2
个整数 a
,b
,含义如题目描述中所示。 整数之间以空格间隔。
输出格式
针对输入,打印出 n
个整数,第 I
个数代表第 I
个气球总共被涂色的次数。 整数之间以空格间隔。
输入输出样例1
输入
3
1 1
2 2
3 3
输出
1 1 1
输入输出样例2
输入
3
1 1
1 2
1 3
输出
3 2 1
说明提示
n≤,a≤b,1≤a≤b≤n
【Java代码及解题思路】
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] a = new int[n][2]; // 数组a存放输入:a[i][0]=min; a[i][1]=max;
int[][] b = new int[n][2]; // 数组b存放结果:b[i][0]=气球编号; b[i][1]=涂过次数;
for(int i=0;i<n;i++){
a[i][0] = scanner.nextInt();
a[i][1] = scanner.nextInt();
b[i][0] = i+1;
b[i][1] = 0;
}
for(int i=0;i<n;i++){
for(int j = 0;j<n;j++){
if(a[i][0]<=b[j][0]&&a[i][1]>=b[j][0]){
b[j][1] ++;
}
}
}
for(int i=0;i<n;i++){
System.out.print(b[i][1] + " ");
}
}
}