📌  相关文章
📜  教资会网络 | UGC NET CS 2015 年 12 月 – II |问题 3(1)

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

UGC NET CS 2015 年 12 月 – II |问题 3

该问题要求我们设计一个程序,并根据给定的输入格式运行程序,该程序需要输出一个特定格式的矩阵。

输入格式:

  • 第一行包含一个整数 n,表示矩阵的行数和列数。
  • 接下来的 n 行包含 n 个空格分隔的整数,表示矩阵的元素。

输出格式:

  • 输出一个 n×n 的矩阵,该矩阵的每一行都包含每个元素及其上、下、左、右四个方向的元素之和。每个元素的值使用单个空格隔开。
程序实现思路

该程序需要完成两个主要任务:

  1. 读取矩阵元素
  2. 输出矩阵及其周围元素之和

我们将使用两个函数分别处理这两个任务,然后将它们组合起来生成程序。

函数1 - 读取矩阵元素

该函数需要按照给定的输入格式读取矩阵的元素,并将这些元素存储在一个二维数组中。函数定义如下:

def read_matrix(n):
    """
    读取矩阵的元素并返回一个二维数组

    n - 矩阵的行数和列数

    return - 包含矩阵元素的二维数组
    """
    matrix = []
    for i in range(n):
        row = input().split()
        matrix.append([int(x) for x in row])
    return matrix

该函数使用一个循环读取每一行,然后将每一行的元素转换为整数并添加到二维数组中。

函数2 - 输出矩阵及其周围元素之和

该函数需要遍历矩阵的每个元素,计算该元素及其上、下、左、右四个方向的元素之和,并输出结果。函数定义如下:

def print_summed_matrix(matrix):
    """
    输出矩阵及其周围元素之和

    matrix - 包含矩阵元素的二维数组
    """
    n = len(matrix)
    for i in range(n):
        for j in range(n):
            # 计算上下左右四个方向的元素之和
            top = matrix[i-1][j] if i > 0 else 0
            bottom = matrix[i+1][j] if i < n-1 else 0
            left = matrix[i][j-1] if j > 0 else 0
            right = matrix[i][j+1] if j < n-1 else 0

            # 输出结果
            print(top + bottom + left + right + matrix[i][j], end=' ')
        print()

该函数使用两个嵌套的循环遍历矩阵的每个元素。对于每个元素,该函数计算该元素及其上、下、左、右四个方向的元素之和,并输出结果。

组合函数

现在,我们可以将两个函数组合起来生成程序。程序的主要流程如下:

  1. 读取矩阵的行数和列数
  2. 读取矩阵的元素
  3. 输出矩阵及其周围元素之和

程序的代码如下:

def read_matrix(n):
    """
    读取矩阵的元素并返回一个二维数组

    n - 矩阵的行数和列数

    return - 包含矩阵元素的二维数组
    """
    matrix = []
    for i in range(n):
        row = input().split()
        matrix.append([int(x) for x in row])
    return matrix


def print_summed_matrix(matrix):
    """
    输出矩阵及其周围元素之和

    matrix - 包含矩阵元素的二维数组
    """
    n = len(matrix)
    for i in range(n):
        for j in range(n):
            # 计算上下左右四个方向的元素之和
            top = matrix[i-1][j] if i > 0 else 0
            bottom = matrix[i+1][j] if i < n-1 else 0
            left = matrix[i][j-1] if j > 0 else 0
            right = matrix[i][j+1] if j < n-1 else 0

            # 输出结果
            print(top + bottom + left + right + matrix[i][j], end=' ')
        print()


if __name__ == '__main__':
    # 读取矩阵的行数和列数
    n = int(input())

    # 读取矩阵的元素
    matrix = read_matrix(n)

    # 输出矩阵及其周围元素之和
    print_summed_matrix(matrix)
代码片段
def read_matrix(n):
    """
    读取矩阵的元素并返回一个二维数组

    n - 矩阵的行数和列数

    return - 包含矩阵元素的二维数组
    """
    matrix = []
    for i in range(n):
        row = input().split()
        matrix.append([int(x) for x in row])
    return matrix


def print_summed_matrix(matrix):
    """
    输出矩阵及其周围元素之和

    matrix - 包含矩阵元素的二维数组
    """
    n = len(matrix)
    for i in range(n):
        for j in range(n):
            # 计算上下左右四个方向的元素之和
            top = matrix[i-1][j] if i > 0 else 0
            bottom = matrix[i+1][j] if i < n-1 else 0
            left = matrix[i][j-1] if j > 0 else 0
            right = matrix[i][j+1] if j < n-1 else 0

            # 输出结果
            print(top + bottom + left + right + matrix[i][j], end=' ')
        print()


if __name__ == '__main__':
    # 读取矩阵的行数和列数
    n = int(input())

    # 读取矩阵的元素
    matrix = read_matrix(n)

    # 输出矩阵及其周围元素之和
    print_summed_matrix(matrix)