解题思路
目标是将 n 个相同的正方形拼图块全部摆放在无限大的方格网格中,每个拼图块恰好占据一个格子,且互不重叠。摆放完成后,相邻拼图块之间的每条共享边会产生一个完整的星形图案。我们需要最大化这些共享边的数量,即星形图案的总数。
-
基本思路
尽量将拼图块排列成接近矩形的形状,这样可以最大化内部相邻边的数量。如果拼图块不能恰好排成一个完整矩形,多出的块可以放在矩形的一侧(例如作为新的一列,只放多出的那几行),这样也能增加额外的共享边。
-
枚举摆放的行数
设我们决定将拼图块摆成 i 行(1≤i≤n),那么尽可能让每一行的块数相等。令 j=⌊n/i⌋ 表示除最后可能多出的列之外,每行有 j 个拼图块。此时可以填满一个 i×j 的矩形,剩余 r=nmodi 个拼图块(0≤r<i)。