编程逻辑/伪代码

ug

我需要为我的班级制作一些伪代码,而我对如何执行此问题感到困惑:

有一个NxN网格(1 <N <1300)。您必须在每个2x2子网格中恰好放置2个项目(假设每种情况都有解决方案)。打印每个解决方案。

输入示例:3

输出示例:

111
000
111

000
111
000

101
010
101


010
101
010

等等...(其中0是空白空间,而1被占用)

奖励:如果网格中的每个正方形都经过加权,请说明如何找到最佳解决方案。

大卫·艾森斯塔

生成某些解决方案的一种简单方法是任意选择第一行,然后通过减去前一行来填充每个后续行。我们也可以使用列来做到这一点。

事实证明,每个有效矩阵都是由这两个变体之一生成的(请注意,两个完美的棋盘格都是由两者生成的)。原因是,如果第一行具有相邻的零或相邻的零,则将强制其下的条目,这将迫使该行的其余部分减一,再减去前一行,并依次强制其余的行。同上的列。如果第一行和第一列都没有重复,那么我们有两个棋盘之一。

最大化并不难。对于交替的行,请为每列确定偶数行还是奇数行更有价值。对于交替列,请为每行确定偶数列还是奇数列是否更有价值。充分利用这两种解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章