问题:
求所有的n阶矩阵,使得每个元素的上、下、左、右的位置上的元素(如果存在)之和为偶数。
解答:
枚举第一行,根据递推式
x[i][j] = (x[i - 2][j] + x[i - 1][j - 1] + x[i - 1][j + 1]) % 2;
依次计算每一行即可,最后判断最后一行是否满足。
很容易发现,由上述递推式构造出来的矩阵,一定是关于主对角线和副对角线对称的。
更进一步可以得到,无论第一行是什么值,由此递推式得到的矩阵,都是满足条件的矩阵,所以一共有2^n个满足条件的矩阵。
PS:
这题类似于点亮所有的灯,点亮所有的灯是每个元素的上、下、左、右的位置上的元素(如果存在)加上这个元素本身为偶数,所以要复杂很多。参考:
PS:
要证明这个矩阵是对称的,确实不难。
首先,主对角线本身是关于主对角线对称的。
其次,由主对角线的前n-1个元素的上、下、左、右的位置上的元素(如果存在)之和为偶数依次可以推出,与主对角线相邻的两条斜线的n-1个数和n-1个数依次相等,即2条斜线对称。
接着再同理证明旁边2条斜线对称
......
最后同理证明左下角和右上角对称。
所以,整个矩阵关于主对角线对称。
同理,整个矩阵关于副对角线对称。