P3397 地毯
思路分析
定义一个二维数组 a[ ][ ]存放每个点覆盖地毯的个数,下标表示每个点的坐标;设置一个二重循环依次遍历每个地毯覆盖的坐标范围,使地毯覆盖范围内点的值+1;打印出该二维数组 a[ ][ ]即为本题答案;
注意事项
由题可知:对于20%的数据,有 n≤50,m≤100;对于100%的数据,有 n,m≤1000;所以数组定义为a[1003][1003];二维数组应该初始化为 0;打印数组循环从 (1, 1) 开始,到 (n, n) 结束;
代码实现
#include <stdio.h>
int a
[1003][1003] = {0};
int main(){
int n
, m
, x1
, x2
, y1
, y2
, i
, j
;
scanf("%d%d", &n
, &m
);
while(m
--){
scanf("%d%d%d%d", &x1
, &y1
, &x2
, &y2
);
for(i
= x1
; i
<= x2
; i
++)
for(j
= y1
; j
<= y2
; j
++)
a
[i
][j
] += 1;
}
for(i
= 1; i
<= n
; i
++){
for(j
= 1; j
<= n
; j
++){
printf("%d ", a
[i
][j
]);
}
printf("\n");
}
return 0;
}