B3751 [信息与未来 2019] 粉刷矩形

· · 题解

欢迎报名洛谷网校,期待和大家一起进步!

本题考察字符数组、模拟。

我们可以使用字符数组将矩形存储下来。接着,我们模拟每一次粉刷操作。对于读入的粉刷方向,我们分四种情况分别使用一个循环去模拟涂色的过程。

if (d == 'R') { // 往右涂色
    for (int j = y; j <= m; j++)
        a[x][j] = c;
} else if (d == 'U') { // 往上涂色
    for (int j = x; j >= 1; j--)
        a[j][y] = c;
} else if (d == 'L') { // 往左涂色
    for (int j = y; j >= 1; j--)
        a[x][j] = c;
} else if (d == 'D') { // 往下涂色
    for (int j = x; j <= n; j++)
        a[j][y] = c;
}

注意,所有未涂色的部分应当是 .,我们可以在进行 k 次涂色之前先将字符数组预处理为 .。最后,我们使用二重循环输出字符数组即可。