注意:如有侵权,请告知,我立马删除。
编程题 | 20.0分1/3
画板
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
沫璃有一个画板,画板可以抽象成有100行每行100个像素点的正方形。沫璃在画板上画画,她一共画了n次,
每次将一个矩形涂上颜色。沫璃想知道一共有多少个像素点被她涂过颜色。若一个像素点被涂了k次,那么认为有k个像素点被涂过颜色。
输入:
第一行一个数T(T<=100),表示数据组数。
对于每组数据,第一行一个整数n , (1<=n<=100)
接下来n行,每行4个整数x1, y1, x2, y2 (1 <= x1 <= x2 <= 100, 1 <= y1 <= y2 <= 100),
表示矩形的两个对角所对应的像素点的座标。
输出
对于每组数据,输出一行,表示沫璃一共涂了多少个像素点。
实例:
2
2
1 1 2 3
2 2 3 3
2
1 1 3 3
1 1 3 3
样例输出
10
18
分析:由于重叠的不用计算,那么就很简单了,直接利用对角线计算面积进行相加就是点数。
package face360;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class test1 {
public static void main(String[] arges){
int i,j,k;
int[] a1 = new int[4];
Scanner scanner = new Scanner(System.in);
int totalPoint = 0;//用于统计总的涂的像素点
int point = 0;//用于统计每组数据的像素点
int m = scanner.nextInt();
int[] b1 = new int[m];
for(i=0;i<m;i++) {
int n = scanner.nextInt();
for(j=0;j<n;j++){
for(int p=0;p<4;p++) { //输入数组
a1[p] = scanner.nextInt();
}
point = (a1[2]-a1[0]+1)*(a1[3]-a1[1]+1);
totalPoint += point;
}
b1[i] = totalPoint;
}
System.out.println(Arrays.toString(b1));
}
}