📌  相关文章
📜  根据给定条件遍历矩阵的方法计数(1)

📅  最后修改于: 2023-12-03 15:10:49.570000             🧑  作者: Mango

根据给定条件遍历矩阵的方法计数

在编程中,经常需要对矩阵进行遍历,并按照一定的条件进行计数。本文将介绍一些方法,帮助程序员了解如何根据给定条件遍历矩阵并进行计数。

简单遍历

最简单的方法是通过两层循环遍历矩阵中的每个元素,然后根据条件进行计数。

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
count = 0

for i in range(len(matrix)):
    for j in range(len(matrix[0])):
        if matrix[i][j] % 2 == 0:
            count += 1

print(count)

这段代码遍历了一个$3\times 3$ 的矩阵,计算其中偶数元素的数量。

深度优先搜索(DFS)

深度优先搜索是一种遍历树或图的算法,也可以用于矩阵的遍历。它可以递归地访问每个节点,并根据条件进行计数。

def dfs(matrix, i, j, visited):
    if i < 0 or j < 0 or i >= len(matrix) or j >= len(matrix[0]):
        return
    if visited[i][j]:
        return
    visited[i][j] = True
    if matrix[i][j] % 2 == 0:
        count[0] += 1
    dfs(matrix, i - 1, j, visited)
    dfs(matrix, i + 1, j, visited)
    dfs(matrix, i, j - 1, visited)
    dfs(matrix, i, j + 1, visited)

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
visited = [[False] * len(matrix[0]) for _ in range(len(matrix))]
count = [0]

dfs(matrix, 0, 0, visited)
print(count[0])

这段代码使用深度优先搜索遍历了一个$3\times 3$ 的矩阵,计算其中偶数元素的数量。

广度优先搜索(BFS)

广度优先搜索也是一种遍历树或图的算法,可以用于矩阵的遍历。它从起点开始,将其相邻的节点加入队列,并逐一处理每个节点,直到遍历完所有节点。

def bfs(matrix, i, j, visited):
    queue = [(i, j)]
    while queue:
        i, j = queue.pop(0)
        if i < 0 or j < 0 or i >= len(matrix) or j >= len(matrix[0]):
            continue
        if visited[i][j]:
            continue
        visited[i][j] = True
        if matrix[i][j] % 2 == 0:
            count[0] += 1
        queue.append((i - 1, j))
        queue.append((i + 1, j))
        queue.append((i, j - 1))
        queue.append((i, j + 1))

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
visited = [[False] * len(matrix[0]) for _ in range(len(matrix))]
count = [0]

bfs(matrix, 0, 0, visited)
print(count[0])

这段代码使用广度优先搜索遍历了一个$3\times 3$ 的矩阵,计算其中偶数元素的数量。

总结

根据给定条件遍历矩阵的方法有很多种,包括简单遍历、深度优先搜索和广度优先搜索等。在实际编程中,可以根据问题的具体要求选择合适的方法。