360公司 2018校招 技术综合C卷在线考试 编程题

注意:如有侵权,请告知,我立马删除。

编程题 | 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;iint n =  scanner.nextInt();
            for(j=0;jfor(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));
    }
}

你可能感兴趣的:(算法)