Skip to content

20731: 矩阵换行求边缘和

http://cs101.openjudge.cn/practice/20731/

输入一个整数矩阵,交换其中的两行,然后计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

输入

第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。 接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。 在接下来是两个整数x,y,表示需要将矩阵的第x行和第y行交换一下。

输出

输出交换行之后的矩阵的边缘元素和

样例输入

3 3
3 4 1
3 7 1
2 0 1
1 2

样例输出

18

来源

Guo wei

python
# 输入矩阵的行数和列数
m, n = map(int, input().split())

# 输入矩阵
matrix = [list(map(int, input().split())) for _ in range(m)]

# 输入需要交换的两行的索引(注意输入是1-based的,需要转换为0-based)
x, y = map(int, input().split())
x -= 1
y -= 1

# 交换矩阵的第x行和第y行
matrix[x], matrix[y] = matrix[y], matrix[x]

# 计算矩阵边缘元素之和
edge_sum = 0

# 第一行
edge_sum += sum(matrix[0])

# 最后一行
if m > 1:
    edge_sum += sum(matrix[m - 1])

# 第一列和最后一列
for i in range(1, m - 1):
    edge_sum += matrix[i][0]  # 第一列
    if n > 1:
        edge_sum += matrix[i][n - 1]  # 最后一列

# 输出结果
print(edge_sum)