c中的棋类矩阵

时间:2013-09-19 16:32:51

标签: c algorithm matrix

我有一个包含替代黑白单元格(如棋盘)的n x m矩阵和一个常数c,如果右下角是黑色则为0,如果是白色,则为1。

我无法确定在n x m矩阵上可以找到多少8×8个带有白色右下角的不同电路板。

我在想我应该从右下角开始检查它的颜色。如果它是白色的,那么我有一个很好的情况(n> 8& m> 8),但我不知道如何施加8 x 8条件。

2 个答案:

答案 0 :(得分:2)

如果nxm板的右下角是白色,那么就有天花板((n-7)(m-7)/ 2)可能的棋盘。

如果nxm板的右下角是黑色,则有可能的地板((n-7)(m-7)/ 2)棋盘。

看到这个的方法是看棋盘的左上角可以在哪里。它仅限于nxm网格中的左上(n-7)x(m-7)子网格。由于棋盘的左上角始终为白色,因此问题会减少到此(n-7)x(m-7)子网格中有多少个白色方块。

答案 1 :(得分:1)

让右下角的索引为(0, 0),左上角的索引为(N, M)。现在,每个8 * 8方格的右下方索引(i, j)应保持以下属性:

i <= N - 8

j <= M - 8

(N - 8 + 1) * (M - 8 + 1)个这样的方块。其中有多少人的右下角标有白色?如果你用纸画一些棋盘,你会发现答案是

ceil((N - 7) * (M - 7) / 2)