编程 Logic/Psuedocode
Programming Logic/Psuedocode
我需要为我的 class 编写一些伪代码,但我对如何做这个问题感到困惑:
有一个 NxN 网格 (1 < N < 1300)。您必须在每个 2x2 子网格中恰好放置 2 个项目(假设每种情况都有一个解决方案)。打印每个解决方案。
输入示例:
3
输出示例:
111
000
111
000
111
000
101
010
101
010
101
010
等...
(其中 0 为空 space 并取 1)
奖励:如果网格中的每个方块都被加权,请说明如何找到最佳解决方案。
生成一些解决方案的一种简单方法是任意选择第一行,然后通过减去前一行来填充后续的每一行。我们也可以对列执行此操作。
事实证明,每个有效矩阵都是由这两个变体之一生成的(请注意,两个完美的棋盘是由两者生成的)。原因是,如果第一行有相邻的零或相邻的零,则强制其下方的条目,这些条目强制该行的其余部分减去前一行,然后强制其余行。同上专栏。如果第一行和第一列都没有重复项,那么我们就有了两个棋盘中的一个。
最大化并不难。对于交替行,为每一列决定是偶数行还是奇数行更有价值。对于交替列,决定每一行是偶数列还是奇数列更有价值。充分利用这两种解决方案。
我需要为我的 class 编写一些伪代码,但我对如何做这个问题感到困惑:
有一个 NxN 网格 (1 < N < 1300)。您必须在每个 2x2 子网格中恰好放置 2 个项目(假设每种情况都有一个解决方案)。打印每个解决方案。
输入示例: 3
输出示例:
111
000
111
000
111
000
101
010
101
010
101
010
等... (其中 0 为空 space 并取 1)
奖励:如果网格中的每个方块都被加权,请说明如何找到最佳解决方案。
生成一些解决方案的一种简单方法是任意选择第一行,然后通过减去前一行来填充后续的每一行。我们也可以对列执行此操作。
事实证明,每个有效矩阵都是由这两个变体之一生成的(请注意,两个完美的棋盘是由两者生成的)。原因是,如果第一行有相邻的零或相邻的零,则强制其下方的条目,这些条目强制该行的其余部分减去前一行,然后强制其余行。同上专栏。如果第一行和第一列都没有重复项,那么我们就有了两个棋盘中的一个。
最大化并不难。对于交替行,为每一列决定是偶数行还是奇数行更有价值。对于交替列,决定每一行是偶数列还是奇数列更有价值。充分利用这两种解决方案。