Menu
CoddyTech

传播

Coddy 编程问题挑战 课程的第 31 课,共 32 课。

challenge icon

挑战

困难

在一个街区里,每户邻居都会把房子漆成与灰色房子相同的颜色。因此,在一些房子被漆成灰色的那一天,这些房子水平方向和垂直方向相邻的每户人家都会决定把自己的房子也漆成同样的颜色。这需要一个月。之后,与这些房子水平方向和垂直方向相邻的房子也会决定这样做,这同样需要一个月,如此不断进行。

####X        ##XXX       #XXXX        XXXXX
##X##        #XXXX       XXXXX       XXXXX
#####         ##X##       #XXXX        XXXXX
 第1个月            第2个月           第3个月           第4个月

如你所见,一开始只有两栋房子被漆成灰色([1,5] 和 [2,3])。一个月后,有 8 栋房子被漆成灰色,它们位于已经漆成灰色的房子的上方、下方、右侧和左侧。两个月后,有 13 栋房子被漆成灰色;3 个月后,街区里的所有房子都被漆成灰色。

 

输入两个自然数 H 和 W,分别表示街区的高度和宽度。下一行输入一个自然数 N,表示需要漆成灰色的房子数量。再下一行输入一个自然数 M,接下来的 M 行中,每行输入两个自然数 X 和 Y,表示已经漆成灰色的房子的位置。

输出总共有 N 栋房子被漆成灰色(包括一开始就漆成灰色的房子)需要多少个月。

 

输入
3 5
7
2
1 5
2 3

输出
1

解释 #1:这是上文中的示例。街区的高度为 3,宽度为 5。我们需要输出总共有 7 栋房子被漆成灰色需要多少个月。已有 2 栋房子被漆成灰色,位置分别是 [1, 5] 和 [2,3]。因此,总共需要一个月才能有 7 栋房子被漆成灰色。

亲手试试

#include <stdio.h>

int main() {
    // 在这里编写代码
    return 0;
}

编程问题挑战中的所有课

自己练习: C 在线编译器