Skip to content

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()