给你两个偶整数n和m。你的任务是找到任何具有n行和m列的二进制矩阵a,其中每个单元格(¿,j)恰好有两个与ai.j值不同的邻居。 基质中的两个细胞被认为是相邻的,当且仅当它们共用一个侧。更正式地说,细胞(2,4)的邻居是:(2 - 1,y),(2,y+ 1),(2 + 1,4)和(2,y 1) 可以证明,在给定的约束下,答案总是存在的。 输入描述 每个测试都包含多个测试用例。第一行输入包含单个整数t(1 < t < 100)-测试用例的数量。以下几行包含测试用例的描述。 每个测试用例的唯一行包含两个偶整数n和m(2 < R,m < 50)-分别是二进制矩阵的高度和宽度。 输出描述 对于每个测试用例,打印n行,每行都包含m个数字,等于0或1-任何满足以下约束的二进制矩阵 声明。
时间: 2024-04-08 20:34:14 浏览: 119
对于给定的测试用例,我们需要找到一个满足条件的二进制矩阵。根据题意,每个单元格(i,j)需要有恰好两个与ai.j值不同的邻居。
我们可以使用以下方法来构造满足条件的二进制矩阵:
1. 对于偶数行i(1 ≤ i ≤ n),将所有奇数列(j)的单元格设置为0,偶数列的单元格设置为1。这样,每个单元格(i,j)都有两个与ai.j值不同的邻居,并且这两个邻居位于相邻列。
2. 对于奇数行i(1 ≤ i ≤ n),将所有偶数列(j)的单元格设置为0,奇数列的单元格设置为1。这样,每个单元格(i,j)都有两个与ai.j值不同的邻居,并且这两个邻居位于相邻列。
根据上述方法,我们可以构造出满足条件的二进制矩阵。以下是一个示例实现:
```python
def construct_matrix(n, m):
matrix = []
for i in range(1, n+1):
row = []
for j in range(1, m+1):
if i % 2 == 0:
if j % 2 == 0:
row.append(1)
else:
row.append(0)
else:
if j % 2 == 0:
row.append(0)
else:
row.append(1)
matrix.append(row)
return matrix
# 示例用法
t = int(input())
for _ in range(t):
n, m = map(int, input().split())
matrix = construct_matrix(n, m)
for row in matrix:
print(' '.join(map(str, row)))
```
上述代码将根据给定的测试用例数量和描述,构造满足条件的二进制矩阵,并将其打印出来。
注意:以上代码仅为示例实现,可能不是最优解。在实际应用中,可能需要根据具体需求进行优化。
阅读全文