放置一些星星,使得每行每列均有三颗星星。星星不能相邻或对角相邻。
以下给出我作为“谜题解答者”的完整思路。
一、题意重述
在一个方格棋盘上,放若干颗“星星”,要求:
每一行恰好有 3 颗星;
每一列恰好有 3 颗星;
任意两颗星既不能水平或垂直相邻,也不能对角相邻。
二、关键提示与思路
相邻(含对角)排斥 ⇒ 最自然的想法是“棋盘染色”——把整个棋盘染成黑白相间,利用同色格子之间既不共边也不共角。
若只在同一种颜色(比如“黑格”)上放星,则自动满足“无相邻、无对角相邻”的要求。
设棋盘为 N×N,则每行有 N/2 个黑格,每列也有 N/2 个黑格。要在每行放 3 颗星,必须有 N/2 ≥ 3 ⇒ N ≥ 6。但若 N=6,则 N/2=3,意味着“每行的所有黑格都要放星”——放满后又无法在每列都恰好放 3 颗(6×6 黑格总数为 18,3×6 行=18,正好凑满;但此时每列的黑格也是 3 格,刚好被占满,理论可行,却因为题设还要“去掉”使得行列都“恰好”3 颗且还要无对角相邻,6×6 情况实际上排不出可去掉的余量)。
最常见的标准解是在 8×8 棋盘上:
– 8×8 棋盘共有 32 个黑格,每行 4 个,每列 4 个;
– 只在黑格上考虑摆星,可保证“绝不会”在水平、垂直或对角上相邻;
– 要每行每列放 3 颗星,就是“从每行 4 个黑格中各取 3 个”,同时也要“从每列 4 个黑格中各取 3 个”;
– 这等价于“在 8×8 黑格构成的 4×4(行×列)格阵中,每行每列去掉恰好 1 个黑格” ⇒ 相当于在黑格阵上选一个“行列置换”把它去掉,剩下的就是星星位置。
三、具体构造(一个典型解法)
先对 8×8 棋盘作标准棋格染色:(i,j) 满足 i+j 为偶数的定为“黑格”。
黑格共有 32 个,每行 4 个、每列 4 个。
我们在每行“去掉”一个黑格 —— 选取剔除位置为主对角线上的黑格 (1,1),(2,2),…,(8,8)(此时恰好每个 (i,i) 都是黑格,因为 i+i=2i 为偶数)。
剩下的黑格全部放上星。
– 剩下黑格数 = 32 – 8 = 24,恰好是 8 行 × 3 颗/行 = 8 列 × 3 颗/列。
– 每行原有 4 个黑格,去掉 1 个后剩 3 个;每列同理。
– 因为都只放在同色格子上,天然无相邻、无对角相邻。
四、答案总结
在 8×8 棋盘上,将所有满足 (行号+列号)≡0 (mod 2) 的格子视为“候选黑格”,然后去掉主对角线上那 8 个黑格,其余 24 个黑格全部放星。这样:
– 每行恰有 3 颗;
– 每列恰有 3 颗;
– 任意两颗星既不水平/垂直相邻,也不对角相邻。
此即最简明、对称且易于表述的一组解。