P3397 地毯——题解2020.10.3

    科技2022-07-14  155

    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); //循环 m 次,输入 m 个地毯覆盖的坐标范围,对范围内点的值+1; 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; }
    Processed: 0.011, SQL: 8