对于当前行或者列的操作次数,只有0或者1次,再多操作没有意义,最终结果与操作的顺序无关,考虑到 n 最大只有 4,我们可以暴力枚举每行每列是否操作。 时间复杂度O(2n×2n×n2)
n = int(input())
a = [list(map(int, input().split())) for i in range(n)]
b = [list(map(int, input().split())) for i in range(n)]
小 O 有两个 (n×n) 行列的 01 方阵 A 和 B,他希望用最少的操作次数将 A 和 B 变相等。具体的,每次操作他可以选择 A 矩阵的一行或者一列,将此行或列的所有数字进行反转,即:0 变 1,1 变 0。
他想知道自己最少需要几次操作可以做到,或者永远无法做到,请你帮帮他吧。
第一行输入一个 n (1≤n≤4),表示方阵的长和宽。
此后 n 行,每行输入一个整数(保证为 0 或者 1),表示方阵 A。
此后 n 行,每行输入一个整数(保证为 0 或者 1),表示方阵 B。
3
1 0 1
0 1 0
0 0 0
1 0 1
0 1 0
1 1 1
1
翻转A的最后一行