首页 > 试题广场 >

矩阵交换

[编程题]矩阵交换
  • 热度指数:26499 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

KiKi有一个矩阵,他想知道经过k次行变换或列变换后得到的矩阵。请编程帮他解答。


输入描述:

第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)

从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。

接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。

提示:当t为别的字符时不需要处理


输出描述:
输出n行m列,为矩阵交换后的结果。每个数后面有一个空格。
示例1

输入

2 2
1 2
3 4
1
r 1 2

输出

3 4 
1 2 
示例2

输入

2 2
1 3
6 8
2
c 1 2
t 1 2

输出

3 1 
8 6 

说明

当t为别的字符时不需要处理,所以只交换了原矩阵的第1列和第2列。 
row,col = map(int,input().split())
arr = list(input().split() for _ in range(row))
k = int(input())
for _ in range(k):
    r,n,m = input().split()
    n = int(n)-1
    m = int(m)-1
    if r=="r":
        arr[n],arr[m] = arr[m],arr[n]
    elif r=="c":
        for i in range(row):
            arr[i][n],arr[i][m] = arr[i][m],arr[i][n]
    else:
        pass
for i in arr:
    print(*i)

发表于 2024-09-29 18:36:50 回复(0)
构建多维列表,r:行换,c:列交换,循环打印
n, m = map(int, input().split())
a = []
for i in range(n):
    a.append(list(map(int, input().split())))

b = int(input())
for i in range(b):
    t, x, y = input().split()
    if t == "r":
        s = a[int(x) - 1]
        a[int(x) - 1] = a[int(y) - 1]
        a[int(y) - 1] = s
    elif t == "c":
        for j in range(n):
            s1 = a[j][int(x) - 1]
            a[j][int(x) - 1] = a[j][int(y) - 1]
            a[j][int(y) - 1] = s1

for i in a:
    print(*i)


编辑于 2024-02-10 01:25:10 回复(0)
m,n = map(int,input().split())
x = list(input().split() for _ in range(m))
k = int(input())
for _ in range(k):
    t,a,b = input().split()
    if t == 'r':
        i = x[int(a)-1]
        x[int(a)-1] = x[int(b)-1]
        x[int(b)-1] = i
    elif t == 'c':
        for i in range(m):
            p = x[i][int(a)-1]
            x[i][int(a)-1] = x[i][int(b)-1]
            x[i][int(b)-1] = p
for i in x:
    print(*i)

发表于 2021-08-31 09:26:56 回复(1)