首页 > 试题广场 >

小O的矩阵变换

[编程题]小O的矩阵变换
  • 热度指数:177 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小O有两个 nn 列的01方阵 AB,他希望用最少的操作次数将 AB 变相等。具体的,每次操作他可以选择 A 矩阵的一行或者一列,将此行或列的所有数字进行反转,即:0变1, 1变0。

他想知道自己最少需要几次操作可以做到,或者永远无法做到,请你帮帮他吧。

输入描述:
每个测试文件均包含多个测试点。第一行输入一个整数 T\ (1\le T\le 10) 代表测试数据组数,每组测试数据描述如下:
第一行输入一个 n\ (1 \leq n \leq 4),表示方阵的长和宽。
此后 n 行,每行输入 n 个整数(保证为 0 或者 1),表示方阵 A
此后 n 行,每行输入 n 个整数(保证为 0 或者 1),表示方阵 B


输出描述:
对于每组测试数据,在一行上输出一个整数表示最少的操作次数,如果无法将 A 变为 B,输出 -1。
示例1

输入

2
2
0 1
1 0
1 0
0 1
2
0 1
1 1
0 0
0 0

输出

2
-1

说明

第一个测试数据:
0 1
1 0
操作一次第一行变成:
1 0
1 0
再操作第二行变成:
1 0
0 1

因此最少需要 2 次。
头像 丨阿伟丨
发表于 2025-09-11 17:25:52
题目链接 小O的矩阵变换 题目描述 给定两个大小为 的 01 矩阵 和 。每次操作可以选择矩阵 的某一行或某一列,并将其中的所有元素进行翻转(0 变 1,1 变 0)。求将矩阵 变换为矩阵 所需的最少操作次数。如果无法完成变换,则输出 -1。 解题思路 这是一个经典的矩阵变换问题,其核心在 展开全文
头像 有胆量的柯基在学习
发表于 2025-08-22 19:12:08
#include <bits/stdc++.h> using namespace std; static inline int read_bit() { char ch; while (cin >> ch) { if (ch == '0' | 展开全文