CSP-201409-2-画图
解题思路
-
定义
picture
的二维数组,用于记录每个单元是否被涂色。数组的大小被设置为105x105,这是为了确保能够覆盖题目中可能出现的所有坐标。 -
输入变量
n
,表示将要绘制的矩形数量。 -
对于每个矩形,读取其左下角(x1, y1)和右上角(x2, y2)的坐标。
-
使用嵌套循环遍历矩形内的每个单元,如果该单元未被涂色(即
picture[j][k]
为0),则将其标记为已涂色(这应该通过设置picture[j][k] = 1;
来完成。 -
最后,再次遍历整个
picture
数组,计算被涂色的单元总数(即值为1的单元总数)。
完整代码
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>>picture(105, vector<int>(105));
int n, s;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 0; i < n; i++)
{
int x1, x2, y1, y2;
cin >> x1 >> y1 >> x2 >> y2;
for (int j = x1; j < x2; j++)
{
for (int k = y1; k < y2; k++)
{
if (!picture[j][k]) // 0表示没有被上色
{
picture[j][k]++; // 上色
}
}
}
}
for (auto& it : picture) {
for (auto& jt : it) {
if (jt) // 被上色
{
s++;
}
}
}
cout << s;
return 0;
}