读入一个n*m的矩阵,定义两个数是友好的,当且仅当他们位置相邻(上下左右)且值相同。求友好数对个数。 输入 第一行两个整数n,m 之后n行,每行m个0到100间的整数 输出 一个整数,表示答案。
时间: 2024-12-28 21:36:02 浏览: 34
这是一个经典的二维数组遍历问题,通常可以通过深度优先搜索(DFS)或者广度优先搜索(BFS)算法来解决。以下是基本的步骤:
1. 定义一个函数 `isFriendly(i, j)`,检查给定的矩阵坐标 `(i, j)` 上的元素是否与其相邻的元素值相等,并且它们都在同一行或同一列。如果满足条件,返回 `True`,否则返回 `False`。
2. 初始化一个变量 `count` 用于记录友好数对的数量,初始值为0。
3. 对于每个元素 (i, j),从第一个元素开始遍历整个矩阵,然后递增 i 和 j 或者减小其中一个(取决于方向),直到超出矩阵范围。对于每一个位置,检查其是否友好并更新计数。
4. 遍历完成后,`count` 就是友好数对的总数。
5. 最后输出 `count`。
```python
def countFriendlyPairs(matrix):
n, m = len(matrix), len(matrix[0])
directions = [(0, 1), (1, 0), (0, -1), (-1, 0)] # 上下左右四个方向
def isFriendly(i, j):
for dx, dy in directions:
x, y = i + dx, j + dy
if 0 <= x < n and 0 <= y < m and matrix[i][j] == matrix[x][y]:
return True
return False
count = 0
for i in range(n):
for j in range(m):
if isFriendly(i, j):
count += 1
return count
# 示例输入
matrix = [
[1, 1, 1],
[1, 0, 1],
[1, 1, 1]
]
# 计算友好数对
result = countFriendlyPairs(matrix)
print("友好数对个数:", result)
阅读全文