题目描述
样例
源代码
#include <iostream>
#include <cstring>
using namespace std;
const int N = 100;
int flag[N + 1][N + 1];
int main()
{
int n, x1, y1, x2, y2, sum = 0;
// 变量初始化
memset(flag, 0, sizeof(flag));
// 输入数据,计算处理
cin >> n;
for (int i = 1; i <= n; i++) {
// 输入数据
cin >> x1 >> y1 >> x2 >> y2;
// 累加面积
sum += (x2 - x1) * (y2 - y1);
// 标记和去除重叠部分
for (int i = x1; i < x2; i++)
for (int j = y1; j < y2; j++) {
if (flag[i][j])
sum--;
flag[i][j] = 1;
}
}
// 输出结果
cout << sum << endl;
return 0;
}
关于这题
因为一个格子有四个点 在计算重复时 很容易多算
所以这里我们用点的个数来代替格子的个数
(用正方形框起来的是标记的点 圆形代表重复了 就需要减掉)