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)