E02899: 矩阵交换行
http://cs101.openjudge.cn/practice/02899/
编写一个函数,输入参数是5*5的二维数组,和n,m两个行下标。功能:判断n,m是否在数组范围内,如果不在,则返回0;如果在范围内,则将n行和m行交换,并返回1。 在main函数中, 生成一个5*5的矩阵,输入矩阵数据,并输入n,m的值。调用前面的函数。如果返回值为0,输出error。如果返回值为1,输出交换n,m后的新矩阵。
输入
5*5矩阵的数据,以及n和m的值。
输出
如果不可交换,则输出error; 如果可交换,则输出新矩阵
样例输入
1 2 2 1 2
5 6 7 8 3
9 3 0 5 3
7 2 1 4 6
3 0 8 2 4
0 4样例输出
3 0 8 2 4
5 6 7 8 3
9 3 0 5 3
7 2 1 4 6
1 2 2 1 2提示
不需要用while循环来反复读取文件中的测试集。 输出error格式如下: cout<< "error" << endl; 输出矩阵格式如下: cout<< setw(4)<< num; 输出矩阵一行后要输出cout<< endl;
python
def swap_rows(matrix, n, m):
# 检查 n 和 m 是否在矩阵的有效索引范围内
if n < 0 or n >= 5 or m < 0 or m >= 5:
return 0
# 交换矩阵的第 n 行和第 m 行
matrix[n], matrix[m] = matrix[m], matrix[n]
return 1
def main():
matrix = []
# 读取 5 行输入,每行输入代表矩阵的一行
for _ in range(5):
# 将输入按空格分割成多个元素,并转换为整数列表
row = list(map(int, input().split()))
matrix.append(row)
# 读取 n 和 m 的值
n, m = map(int, input().split())
# 调用 swap_rows 函数进行行交换操作
result = swap_rows(matrix, n, m)
if result == 0:
print("error")
else:
# 遍历矩阵的每一行
for row in matrix:
# 格式化输出每行元素,每个元素宽度为 4
formatted_row = [f"{num:4d}" for num in row]
# 将格式化后的元素用空字符串连接起来并输出
print("".join(formatted_row))
if __name__ == "__main__":
main()