SP3484 CROSSBIT - Crossbits

题目描述

Crossbits 类似于填字游戏,但在 Crossbit 中,你需要根据特定条件填写二进制位 0 和 1。一个大小为 $N$ 的空 Crossbit 是一个 $N \times N$ 的空网格。 给定一个自然数 $N$,要求在这个空的 Crossbit 中填写 $N^2$ 个二进制位,需要满足以下要求: - 网格的每个方格中只能放 0 或 1,且两条主对角线上不能有 1。 - 每行和每列中 1 的个数都必须恰好为 $K$,其中 $K$ 是给定的一个自然数,并且 $K$ 小于 $N$。 - 每个 0 周围的同一行或同一列中必须至少有一个相邻的 0。 - 将第 1 行、第 2 行、……、第 $N$ 行从左到右的二进制数排列组合,形成一个 $N^2$ 位的二进制数 $B$。 你的任务是编写程序,在一个空的 Crossbit 中填好二进制位,使得满足以上条件的二进制数 $B$ 尽可能小。 例如,当 $N = 4$ 且 $K = 1$ 时,下面的 Crossbit 是满足条件的最小二进制数 $B = 0010100000010100$。 ``` 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 ```

输入格式

输入包含多个测试用例。 每个测试用例在一行中提供 Crossbit 的参数 $N$ 和 $K$。假设 $N$ 不超过 10。 输入以单独一行为 0 的行结束。

输出格式

对于每个测试用例,输出 $N$ 行。每行包括 $N$ 个二进制位,相邻的二进制位之间用一个空格分隔。每个测试用例的最后一行后需要空一行。

说明/提示

- $1 \leq N \leq 10$ - $0 < K < N$ **本翻译由 AI 自动生成**